2013/12/25

Excel VBA CSVデータを処理したい



こんにちは!データ処理が大好きなtknriaです!

特に、実験データなどはCSVファイルにまとめられることが多く、それをExcelでスマートに処理できたりするとカッコいい!

なんか仕事デキる人みたい!


そんな、カッコよく仕事がデキるようになるマクロを紹介します。



■ Excel VBAでCSVデータを一括高速処理!


Excelシート上に、CommandButtonを一つ用意して、 次の関数を割り当てます。



' ----- 以下、ソース -----

Sub データ取り込み_Click()
    Dim OpenFileName As String
    Dim nowbook As Workbook
    Dim nowsheet As Worksheet
   
    Set nowbook = ThisWorkbook
    Set nowsheet = nowbook.ActiveSheet
   
    Dim adoSt As New ADODB.Stream
   
    ' ファイルオープンダイアログの初期ディレクトリを設定
    ChDrive "D"
    ChDir "D:\"
   
    ' csvファイルを開く
    OpenFileName = Application.GetOpenFilename("データ,*.csv")
    If OpenFileName = "False" Then
        MsgBox ("キャンセルされました")
        GoTo job_end
    Else
       
        ' 全てのデータを網羅
        Dim temp_data As String
        Dim str_data() As String
     
        With adoSt
            .Type = adTypeText
            .Charset = "UTF-8"
            .Open
            .LoadFromFile (OpenFileName)

        Do Until .EOS
            temp_data = .ReadText(adReadLine)
            str_data = Split(temp_data, ",")

            ' ---------------------
            ' ここに必要な処理を記述
            ' ---------------------

        Loop
       
        ' csvファイルを閉じる
            .Close
        End With
    End If
   
job_end:
    nowbook.Activate
    nowsheet.Activate
    MsgBox ("データ処理完了")
End Sub

' ----- 以上、ソース -----



関数の意味をググったりすれば、応用はできると思うので、細かい説明はしません。

大きくは、
・csvファイルを選択して読み込む
・データを処理する
・csvファイルを閉じる
ということをしています。


仕事でCSVファイルに触れる機会が多い人は、是非使ってみてください!



■ 億劫なあとがき


こういう処理こそ、Excel VBAの真骨頂ですよね!