0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

フォルダ内のCSVファイルを統合するマクロ その1

Posted at

2個目のマクロは
『同じフォルダ内にあるCSVファイルを使用範囲をそのままコピペして統合するマクロ』
を作成しました。
今回はできるだけオブジェクト思考なコードになるよう、意識しました。
(前回はまずは最後まで動くマクロを作りたかったので、煩雑なコードになってしまいました・・・)

Sub test002()
   
'フォルダを選択
    Dim folderPath As Variant
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        folderPath = .SelectedItems(1)
    End With
       
'Dir関数でCSVファイル名を取得
    Dim buf As String
    buf = Dir(folderPath & "\" & "*.csv")
    
'貼り付け元の「請求統合.xlsx」ファイルの作成
    Dim bath As Workbook
    Set bath = Workbooks.Add
    bath.SaveAs fileName:=folderPath & "\請求統合.xlsx", _
    FileFormat:=xlOpenXMLWorkbook
     
'「請求統合.xlsx」の最初のシート
    Dim tougouWs As Worksheet
    Set tougouWs = bath.Worksheets(1)
       
'ループ開始・CSVファイルの名前が空白になったら(取得できなかったら)ループから外れる
    Do While buf <> ""
    
'「請求統合.xlsx」の最終行を取得
        With tougouWs
            Dim lastLine As Long
            lastLine = .Cells(Rows.Count, 1).End(xlUp).Row
        End With

'CSVファイルの最初のシートを取得
        Dim wb As Workbook
        Set wb = Workbooks.Open(folderPath & "\" & buf)
        Dim ws As Worksheet
        Set ws = wb.Worksheets(1)
    
'CSVファイルの使用範囲を「UsedRange」で指定してコピー
        ws.UsedRange.Copy
        
'もし「請求統合.xlsx」最終行が一行目だったら、A1を指定し貼り付け
'そうではなかったら、A列の最終行の次のセルを指定し貼り付け
        If lastLine = 1 Then
            With tougouWs
                .Activate
                .Cells(lastLine, 1).Activate
            End With
            ActiveSheet.Paste
        Else
            With tougouWs
                .Activate
                .Cells(lastLine + 1, 1).Activate
            End With
            ActiveSheet.Paste
        End If

'CSVファイルを保存せずに閉じる
        wb.Application.CutCopyMode = False
        wb.Saved = True
        wb.Close
                      
'次のCSVファイルを指定する
        buf = Dir()
    Loop
    
'「請求統合.xlsx」を保存して閉じる
    bath.Save
    bath.Close
    
End Sub

これで、一応統合されたデータはできます・・・が、実際は

このようなデータなので、統合範囲をもう少し調整が必要です。
それは次回にしたいと思います。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?