Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6226 / 76734 ←次へ | 前へ→

【76110】Re:CSVの読み込みについて
発言  kanabun  - 14/9/26(金) 23:23 -

引用なし
パスワード
   たとえば、ある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

の一行を加えるといいでしょう。

2 hits

【76108】CSVの読み込みについて 勉強中です。 14/9/26(金) 22:19 質問
【76109】Re:CSVの読み込みについて kanabun 14/9/26(金) 23:08 発言
【76111】Re:CSVの読み込みについて 勉強中です。 14/9/26(金) 23:44 お礼
【76110】Re:CSVの読み込みについて kanabun 14/9/26(金) 23:23 発言

6226 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free