saku&VBA初級教室

時短に生きよう。趣味をたのしめ

リストアップマクロ

リストアップという名前のシートのVBAを別シートで起動するるとA列にシート名、B列にBOOKの名前を転記してくれます。

Sub リストアップマクロ2()
    Dim destWorkbook As Workbook
    Dim destSheet As Worksheet
    Dim srcWorkbook As Workbook
    Dim srcSheet As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    ' リストアップされたシート("リストアップ"という名前)を設定
    Set destWorkbook = ThisWorkbook
    Set destSheet = destWorkbook.Sheets("リストアップ")
    
    ' リストアップシートをクリア
    destSheet.Cells.ClearContents
    
    ' ユーザーが選択した複数のブックにアクセスし、情報を転記
    For i = 1 To Application.Workbooks.Count
        Set srcWorkbook = Application.Workbooks(i)
        If srcWorkbook.Name <> destWorkbook.Name Then ' リストアップブック自体を除外
            For Each srcSheet In srcWorkbook.Sheets
                lastRow = destSheet.Cells(destSheet.Rows.Count, "A").End(xlUp).Row + 1
                destSheet.Cells(lastRow, "A").Value = srcSheet.Name
                destSheet.Cells(lastRow, "B").Value = srcWorkbook.Name
            Next srcSheet
        End If
    Next i
    
    ' 完了メッセージ
    MsgBox "情報がリストアップされました。", vbInformation, "完了"
    
End Sub

 

解説はいつかします。