###◆質問目的
Excel VBAのQueryTableを使用したtxtデータのインポートで
項目行(1行目)は正しく取り込まれるのに、
2行目以降のレコードが全て取り込まれない事象について、
解決策もしくはヒントをご教示いただきたく、質問致します。
###◆PC環境、条件
•Windows10(64bit)
•Office365 Excel
•txtファイル
•UTF-8
•改行コードLF(確か…)
###◆詳細
項目行は正しく表示されており、文字コード、区切り文字の選択に
問題は無いと思われ、なぜレコードが入らないのか、悩んでいます。
(エラー表示も出ず、処理完了してしまいます)
QueryTableは特定の改行コードでないと正しく取り込まれない等の
設定変更不可な条件でもあるのでしょうか?
条件の違うテキストデータを4つ取り込みするマクロを作成していますが、
別モジュールに切り出ししたい為、QueryTableで取込方法を
統一したいと考えています。
どなたか、ご教示の程、宜しくお願い致します。
PowerQueryのファイルからTextを選択して遣られたんですよね。
こちらの環境では(Exce2010.32Bit)では改行コードをCrlf/CR/LFいづれでも読み込めます。
タイトルのみ読み込みの設定が何処かオプションにあるのでしょうか。
PowerQueryの詳細エディタでソースを見てみるのも手かも知れません。
読み込み先は接続からシート(例:Sheet1のA1)へ向けていますよね。
あと関連するのはデータの接続から接続プロパティあたりでしょうか。
・ご自身の書かれたコードとテキストのサンプルを提示してください。
・「条件の違うテキストデータ」とありますがどのような条件でしょうか。
指定された条件のテキストをQueryTableで読んでみましたが、二行目以降もとりこまれますので、
コードに何かないか確認が必要だと思いました。
コードが提示されていないと検証も手間ですので、
回答される確率がかなり下がりますのでご留意ください。
返信が遅くなり申し訳ございません。
>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が条件となります。
情報が欠けており申し訳ございません。
宜しくお願い致します。
PowerQueryでは無く通常のデータインポート処理ですね。