2017年08月08日

Excel 外部データ(CSV)取り込み自動化

Excelで外部データ(CSV)取り込みを自動化します。
ActiveXコントロールのボタンを貼り付けたら以下のソースに書き換えます。
ヘッダー行はシート2行目に事前に用意しておきます。
3行目以降にCSVの内容が取り込まれます。
カラムはすべて文字列型、カラム数はCSVに合わせて適宜修正してください。

Private Sub CommandButton1_Click()
    '定数
    Const columnNum As Integer = 10     'カラム数
    Dim loopIndex As Integer
    Dim ColumnDataTypeArray() As Variant
   
    'すべての列を文字列で取り込む
    ReDim ColumnDataTypeArray(columnNum - 1)
    For loopIndex = 0 To columnNum - 1
        ColumnDataTypeArray(loopIndex) = 2
    Next
    'ファイル取得
    Dim filename As String
    filename = Application.GetOpenFilename("CSVファイル,*.csv;*.txt")
    If filename = "False" Then Exit Sub
    
    'シートへ挿入
    Dim qt As QueryTable
    Set qt = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & filename, Destination:=Range("$A$3"))
    
    With qt
        .AdjustColumnWidth = True
        .RefreshStyle = xlOverwriteCells
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileCommaDelimiter = True
        .TextFileColumnDataTypes = ColumnDataTypeArray
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    
    '新たな名前の定義
    Range(qt.Name).Name = "CSV取込"
    'テータ接続の削除
    qt.Delete
End Sub
タグ:Office Excel VBA
posted by Hiro at 10:37| Comment(0) | プログラム
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: