CSVをテキストファイルウィザードで取り込んだときのマクロ記録の編集
Excel2016ではもはやレガシイ機能とテキスして表示させないと使えなくなったテキストファイルウィザードによる外部データの取り込み。
引数がたくさんあるので自分で書くのは面倒だが、マクロ記録すると余分な引数まで保存される。2列のCSVをテキストファイルウィザードで取り込む際、オーソドックスに「このデータをデータモデルに追加する」はチェックしないで記録した後、改行を整理すると、以下のようになった。メモ代わりにコメント。
QueryTable オブジェクト (Excel) | Microsoft Docs
refreshしない限り見えない仮想のテーブル
1 マクロ記録
With ActiveSheet.QueryTables.Add( _
Connection:= "TEXT;取込対象ファイルのフルパス", _
Destination:= Range("データを返す先の基点セルアドレス")) ’クエリテーブルを追加したシート上のセルでないとエラーになる。
.CommandType = 0 ’必ず削除すること!CSVファイルを読込むのに不適切なゴミ。
.Name = "取込対象のファイル名" ’クエリの「名前」。削除してOK
.FieldNames = True ’「先頭行をデータの見出しとして使用する」「フィールド名を含む」列見出し有。削除してOK
.RowNumbers = False ’「行番号を含む」行番号有。削除してOK
.FillAdjacentFormulas = False '「データの隣接する列に数式をコピーする」
.PreserveFormatting = True '「セル書式を保持する」
.RefreshOnFileOpen = False ’「Excelファイルを開く都度データを更新する」
.RefreshStyle = xlInsertDeleteCells ’「変更されたレコード(行)のデータ更新時の処理」
.SavePassword = False ’「パスワードを保存する」削除してOK
.SaveData = True ’QueryTableレポートのデータも保存するか。削除OK
.AdjustColumnWidth = True ’「列の幅を調整する」
.RefreshPeriod = 0 ’更新期間。削除OK
.TextFilePromptOnRefresh = False ’更新の都度、テキストファイル名指定ダイアログボックス
.TextFilePlatform = 932 ’「元のファイル」文字コード
.TextFileStartRow = 1 ’「取込開始行」
.TextFileParseType = xlDelimited ’「データのファイル形式」データ区切り形式。
.TextFileTextQualifier = xlTextQualifierDoubleQuote ’文字列の引用符
.TextFileConsecutiveDelimiter = False ’連続した区切り文字は1文字として扱う
.TextFileTabDelimiter = False ’タブ区切り
.TextFileSemicolonDelimiter = False ’セミコロン区切り
.TextFileCommaDelimiter = True ’カンマ区切り
.TextFileSpaceDelimiter = False ’スペース区切り
.TextFileColumnDataTypes = Array(1, 2) ’列ごとのデータ型
.TextFileTrailingMinusNumbers = True '「ー」はマイナス記号かただの文字列か
.Refresh BackgroundQuery:=False '以上の設定でデータ取込実行
.Delete 'クエリ削除。手で追加する。
End With
End Sub
2 アレンジ