폴더의 CSV 파일을 통합하는 매크로 1

두 번째 매크로는
『같은 폴더 안에 있는 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

이제 일단 통합 된 데이터를 만들 수 있습니다 ...하지만 실제로는

이러한 데이터이므로 통합 범위를 조금 더 조정해야 합니다.
다음에 하고 싶습니다.

좋은 웹페이지 즐겨찾기