CSV取り込み
コード
Sub CSV取り込み()
Dim tgtCsv As String
tgtCsv = ファイル選択()
If tgtCsv = "" Then Exit Sub
Dim ws As Worksheet
Set ws = ActiveSheet ' CSV のデータを取り込むシート
Dim qt As QueryTable
Set qt = ws.QueryTables.Add(Connection:="TEXT;" & tgtCsv, Destination:=ws.Range("A1")) ' CSV を開く
With qt
.TextFilePlatform = 932 ' 文字コードを指定(shift-jis:932, utf-8:65001)
.TextFileParseType = xlDelimited ' 区切り文字の形式
.TextFileCommaDelimiter = True ' カンマ区切り
' .TextFileTabDelimiter = True ' タブ区切り
' .TextFileSemicolonDelimiter = True ' セミコロン区切り
' .TextFileSpaceDelimiter = True ' スペース区切り
' .TextFileOtherDelimiter = "_" ' 任意区切り
.RefreshStyle = xlOverwriteCells ' セルに上書き
.AdjustColumnWidth = False ' 列幅を自動調整しない
' .TextFileTextQualifier = xlTextQualifierDoubleQuote ' 引用符の指定(xlTextQualifierNone:引用符なし,xlTextQualifierSingleQuote:シングルクォーテーション)
.TextFileStartRow = 1 ' 1 行目から読み込み
.TextFileColumnDataTypes = Array(2, 1, 9, 9, 9, 9) '1:標準, 2:文字列, 9:スキップ
.Refresh ' データを表示
.Delete ' CSV との接続を解除
End With
End Sub
Function ファイル選択()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = ThisWorkbook.Path & "\"
.AllowMultiSelect = False
.Title = "ファイルの選択"
If .Show = True Then
ファイル選択 = .SelectedItems(1)
Else
MsgBox "選択されていません"
End If
End With
End Function
解説
ファイルダイアログを開き、CSVファイルを選択すると取り込める。
区切り文字、データタイプは、取り込むCSVの種類によって設定を変える必要がある。データタイプは、列数(区切り)が多いCSVの場合はマクロ記録を使用して転記してもよい。
参考サイト
Tipsfound