質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

2回答

2550閲覧

Excel VBA QueryTableでtxtデータが2行目以降取り込まれない事象

SSSiii1

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/10/01 23:23

###◆質問目的
Excel VBAのQueryTableを使用したtxtデータのインポートで
項目行(1行目)は正しく取り込まれるのに、
2行目以降のレコードが全て取り込まれない事象について、
解決策もしくはヒントをご教示いただきたく、質問致します。

###◆PC環境、条件
•Windows10(64bit)
•Office365 Excel

•txtファイル
•UTF-8
•改行コードLF(確か…)

###◆詳細
項目行は正しく表示されており、文字コード、区切り文字の選択に
問題は無いと思われ、なぜレコードが入らないのか、悩んでいます。
(エラー表示も出ず、処理完了してしまいます)

QueryTableは特定の改行コードでないと正しく取り込まれない等の
設定変更不可な条件でもあるのでしょうか?

条件の違うテキストデータを4つ取り込みするマクロを作成していますが、
別モジュールに切り出ししたい為、QueryTableで取込方法を
統一したいと考えています。

どなたか、ご教示の程、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tosi

2020/10/02 01:01 編集

PowerQueryのファイルからTextを選択して遣られたんですよね。 こちらの環境では(Exce2010.32Bit)では改行コードをCrlf/CR/LFいづれでも読み込めます。 タイトルのみ読み込みの設定が何処かオプションにあるのでしょうか。 PowerQueryの詳細エディタでソースを見てみるのも手かも知れません。 読み込み先は接続からシート(例:Sheet1のA1)へ向けていますよね。 あと関連するのはデータの接続から接続プロパティあたりでしょうか。
radames1000

2020/10/02 04:03

・ご自身の書かれたコードとテキストのサンプルを提示してください。 ・「条件の違うテキストデータ」とありますがどのような条件でしょうか。 指定された条件のテキストをQueryTableで読んでみましたが、二行目以降もとりこまれますので、 コードに何かないか確認が必要だと思いました。 コードが提示されていないと検証も手間ですので、 回答される確率がかなり下がりますのでご留意ください。
SSSiii1

2020/10/03 09:19 編集

返信が遅くなり申し訳ございません。 >tosiさま PowerQueryだと確かに問題なく取り込めていました。 手書きのマクロだと失敗するのです。。。 フィールド設定はありましたが、TrueもFalseも結果は同じでした。。。 >radaes1000さま コードは以下の通りで、これをCallして使用しています。 Sub ImportText(FilePath As String, SheetName As String, Platform As Long, ParseType As Long) Dim QT As QueryTable Dim AWS As Worksheet ThisWorkbook.Worksheets.Add After:=ThisWorkbook.Worksheets(Worksheets.Count) Set AWS = ThisWorkbook.ActiveSheet AWS.Name = SheetName ' CSV を開く Set QT = AWS.QueryTables.Add(Connection:="TEXT;" & FilePath, Destination:=AWS.Range("A1")) With QT .TextFilePlatform = Platform ' 文字コードを指定 .TextFileParseType = xlDelimited ' 区切り文字の形式 Select Case ParseType Case 1 .TextFileTabDelimiter = True ' タブ区切り Case 2 .TextFileCommaDelimiter = True ' カンマ区切り End Select .RefreshStyle = xlOverwriteCells 'セルに上書き .AdjustColumnWidth = True '列幅調整 .Refresh 'データを表示 .Delete 'CSV との接続を解除 End With End Sub select case部は、読み込むテキストに合わせて 区切り文字を変えられるよう分岐を作っています。 サンプルテキストは、 商品名 出品ID NOといった項目(区切りはタブ) レコードは、 サプリ 04UK 1152 UTF-8のLFが文字コードと改行コードになります。 別のテキストは、シフトJIS、CRLFが条件となります。 情報が欠けており申し訳ございません。 宜しくお願い致します。
tosi

2020/10/05 00:42

PowerQueryでは無く通常のデータインポート処理ですね。
guest

回答2

0

試験しましたが、こちらでは問題なく動きました。(タブ区切りファイルのみ)
ただ、 .Deleteでは接続名前の削除が出来ませんでした。追加は正しくされます。
そのため、下記の記述に変えられた方が宜しいかと思います。

VBA

1Dim ConnName 2ConnName = QT.WorkbookConnection.Name 3ThisWorkbook.Connections(ConnName).Delete

また、手動では正常に動くとのことですので、接続画面のプロパティ内容等を比較確認されたら如何かと思います。
イメージ説明
登録された接続名前は下記VBAで実行して動作確認できます。

VBA

1Function Test_Sample_Miniature() 2 Dim Conn As WorkbookConnection 3 Set Conn = ThisWorkbook.Connections("test") 4 Conn.Refresh 5 Set Conn = Nothing 6End Function

単純な誤りの様な気がしますので、動かしながら出力先等を再度確認されたら如何でしょうか。

投稿2020/10/05 01:12

編集2020/10/05 01:16
tosi

総合スコア553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

改行コードが合ってないのでは。
いろいろ変えてやってみればどうでしょう

投稿2020/10/01 23:29

y_waiwai

総合スコア88051

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問