見出し画像

複数のブックを1つのブックにまとめる(vbaツール)

エクセルで事務を楽にするプログラマーmoimoiです。

2024.2.18
アップグレードしたツールを公開中です。

エクセルの大量のブックのシートを一括で印刷したい時ってありませんか?
今回は複数のブックを1つのブックにまとめるプログラムをご紹介します。

シートに保護がかかっていてもパスワードがかかっていなければ解除してまとめてくれます。


【使い方】

1.同じフォルダにツールとまとめたいエクセルを入れて保存

2.ツールを開いてコンテンツの有効化

3.まとめるボタンをクリック

4.一括編集、一括印刷等々

5.次回使用時に前のシートが不要な場合はシートの削除ボタンをクリック


【コード】

Sub まとめ()
Dim MergeBook As Workbook   '統合先ブック
Dim CurrentBook As Workbook '作業するブック
Dim CurrrentPath As String  '作業するフォルダのパス
Dim Filename As String      '作業するファイル名のリスト
Dim N As Integer            '対象ブック数のカウンタ
Application.ScreenUpdating = False '画面更新を停止 
Set MergeBook = ThisWorkbook 'マクロ実行するブックを統合先ブックとする
CurrentPath = MergeBook.Path Filename = Dir(CurrentPath & "\*.*") 'フォルダ内のブック名を取得 
N = 0 Do While Filename <> Empty     
If Filename <> MergeBook.Name Then '統合先ブックと異なるブック名であれば
Set CurrentBook = Workbooks.Open(CurrentPath & "\" & Filename)
SendKeys "%F"
SendKeys "I"
SendKeys "WS"
SendKeys "Y1"
CurrentBook.Worksheets.Copy After:=MergeBook.Sheets(MergeBook.Sheets.Count)
CurrentBook.Close SaveChanges:=False
N = N + 1     
End If     
Filename = Dir 'フォルダ内の次のブック名を取得 
Loop  Application.ScreenUpdating = True '画面更新を再開 
End Sub

シートを一括削除したい場合は下記を使ってください。

Sub シート削除()
Dim targetSheet As Worksheet    '繰り返し用
Application.DisplayAlerts = False
'削除処理
For Each targetSheet In Worksheets
If targetSheet.Name <> "消したくないシート名" Then 
targetSheet.Delete
End If
Next
Application.DisplayAlerts = True
End Sub



この記事が参加している募集

よろしければ、サポートお願いします! 頂いたサポートは、noteの運営費や新たなコード作成の開発費に充てさせていただきます。