CSVの読み込み

2019年9月23日

VBAまんが CSVとタブ区切りテキスト

Excelを外部システムと連携させるためには、CSV形式のデータの読み込み、書き出しは必須です。
(1)CSVを読み込み OpenText版( 簡略で早いが、 Sub型のメソッドなので、戻り値のファイルオブジェクトは取得できない)

Workbooks.OpenText Filename:=ファイルパス, DataType:=xlDelimited, Comma:=True
ActiveWorkbook.Sheets(1).Cells.Copy ThisWorkbook.Sheets("データ").Range("A1")
ActiveWorkbook.Close False

(2)Excelの標準は日付と解釈できるものは日付にしてしまうので、それを避ける場合

Set FSO = CreateObject("Scripting.FileSystemObject")
 ファイル名 = Replace(Replace(FSO.GetFileName(ファイルパス), ".csv", ""), ".CSV", "")
Set FSO = Nothing
ActiveWorkbook.Worksheets.Add
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & ファイルパス, Destination:=Range("$A$1"))
    .Name = ファイル名
    .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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
End With
'そしてコピー先の設定
 wb.Sheets("入力原本").Cells.NumberFormatLocal = "@" '文字列固定

CSV

Posted by sysvba