폴더의 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
이제 일단 통합 된 데이터를 만들 수 있습니다 ...하지만 실제로는
이러한 데이터이므로 통합 범위를 조금 더 조정해야 합니다.
다음에 하고 싶습니다.
Reference
이 문제에 관하여(폴더의 CSV 파일을 통합하는 매크로 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/m_kudou/items/70f3bf3e45c2b4d87473텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)