【VBA】マクロが置かれているディレクトリにある全xlsxファイルの全シートを取得する

前回は任意のシート名のシートのみ取得してきたが、今回は全シート無条件取ってきたい。

 

完成コードは以下。

Sub SheetCopyVer6()
    Dim macroWb As Workbook
    
    Dim importWb As Workbook
    Dim importPath As String
    Dim SheetName As String
    Dim buf As String
    Dim objSheet As Worksheet
    
    
    Set macroWb = ThisWorkbook
    'SheetName = Range("A2").Value

    
    importPath = ThisWorkbook.Path
   

    buf = Dir(importPath & "\" & "*.xlsx")

    Do
            If buf = "" Then Exit Do
            MsgBox buf
            Set importWb = Workbooks.Open(importPath & "\" & buf)
                For Each objSheet In importWb.Worksheets
                    SheetName = objSheet.Name
                    importWb.Worksheets(SheetName).Copy After:=macroWb.Worksheets("Sheet0")
            Next
            importWb.Close
            buf = Dir()
        
    Loop
    
End Sub

 

 

これは比較的つまずかず、構文エラーのみで求める挙動になった。

 

ポイントは、インポートファイルをセットしたあと、For Each‥‥シート名の数だけ処理を回させるところと、シート名の取得方法。

 

どちらもググればすぐ出てきて簡単だった。

 

備忘録