|
たとえば、あるCSVファイルをQueryTablesで取り込むマクロ記録を
とりますと以下のようになりますが、
Option Explicit
Sub Macro1()
' Macro recorded 2014/9/26 by kanabun
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;H:\(Data)\FData\F_Data.Csv", Destination:=Range("A1"))
.Name = "F_Data"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 932
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 2, 1, 1, 1, 1, 1, 5, 1, 5)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
最初の
> With ActiveSheet.QueryTables.Add(Connection:= _
> "TEXT;H:\(Data)\FData\F_Data.Csv", Destination:=Range("A1"))
部分のCSVファイル名のところを
> 'カレントディレクトリ変更/今回はデスクトップに変更
>CreateObject("WScript.Shell").CurrentDirectory = >CreateObject("WScript.Shell").SpecialFolders("Desktop")
>
> ' 「ファイルを開く」のダイアログでファイル名の指定を受ける
> xlAPP.StatusBar = "読み込むファイル名を指定して下さい。"
> vntFileName = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, _
> Title:=cnsTITLE)
> ' キャンセルされた場合はFalseが返るので以降の処理は行なわない
> If VarType(vntFileName) = vbBoolean Then Exit Sub
> strFileName = vntFileName
を使って 変数 strFileName に取得すれば、
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & strFileName, Destination:=Range("A1"))
と書き替えて一般化できます。
また
> .TextFileColumnDataTypes = Array(2, 2, 2, 1, 1, 1, 1, 1, 5, 1, 5)
のところは 列ごとのデータ型を設定しているところで、
2 は 文字列データ、
5 は 日付(YMD型) データ
としている部分ですので、読み込むCSVデータの列に合わせて適宜設定してください。
また、最後の
> .Refresh BackgroundQuery:=False
> End With
のところは、インポートしたら元のデータとの接続をCUTするため、
> .Refresh BackgroundQuery:=False
.Delete
> End With
の一行を加えるといいでしょう。
|
|