NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

EXCEL VBA(複数CSVファイルの連続処理マクロ)

複数CSVファイルの連続処理マクロ
 EXCEL VBAで複数のCSVファイルをEXCELファイルに一覧化するマクロです
 複数の試験データを一覧化したり、さらにデータ処理を加えたい場合に便利です。

 EXCEL VBAで使用する「複数CSVファイル連続処理」マクロを図1に示します。
 図1「Sub ContinuousProcessing()」内の行にカーソルを合わせた状態でVBE「」ボタンを押すと図2の様に開くファイルを選択する画面が表示されます。
 図3の様な連続処理したいファイルを選択して「開く」ボタンをクリックすると、図4の様に一覧化されたEXCELファイルが表示されます。
Sub ContinuousProcessing()
'CSVファイル連続処理(20180330 NOBArduino日記!)
 '宣言
    Dim FileNames As Variant
    Dim fn As Variant
    Dim SP As String
    Dim Times As Byte
    Times = 0
    Dim SheetNames
    Dim row As Integer
   
 'ファイル名取得
    FileNames = Application.GetOpenFilename _
    ("CSVファイル(*.csv),*.csv", MultiSelect:=True)
    If VarType(FileNames) = vbBoolean Then Exit Sub
 
    'アクティブファイル確認
    SP = ActiveWorkbook.Name
    If ActiveWorkbook.Name = "まとめファイル.xls" Then
        MsgBox ("まとめファイルを閉じて下さい")
        Exit Sub
    'ファイル新規作成
    Else: Workbooks.Add
        'ファイル名をつけて保存
        ActiveWorkbook.SaveAs Filename:= _
        CreateObject("WScript.Shell").SpecialFolders.Item("Desktop") & "\まとめファイル.xls", FileFormat:=xlNormal _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
    End If
 
    'CSVファイル連続処理
    For Each fn In FileNames
        Times = Times + 1
        'ファイルオープン
        Workbooks.OpenText Filename:=fn
        'ファイル内容の確認
        If Range("A1") = "" Then
            MsgBox ("該当するcsvデータでは無い為処理を中止します。適切なファイルを選択して実行して下さい。")
            Exit Sub
        End If
        SheetNames = ActiveSheet.Name
        fns = fn
        '並び替え
        row = Range("A1").End(xlDown).row 'データコピー
        Range(Cells(1, 1), Cells(row, 1)).Select
        Selection.Copy
        Windows("まとめファイル.xls").Activate 'データ貼り付け
        Cells(2, Times).Select
        ActiveSheet.Paste
        Cells(1, Times) = SheetNames '系列名貼り付け
        Windows(SheetNames & ".csv").Activate 'ファイルを閉じる
        ActiveWindow.Close Savechanges:=False
    Next fn
   
    '上書き保存
    ActiveWorkbook.Save
End Sub
図1:プログラムの内容

イメージ 1
図2:CSVファイルを選択


イメージ 2
図3:テスト処理用CSVファイルの内の一つ

イメージ 3
図4:3つのCSVファイルをEXCELファイルに一覧化して保存