複数のエクセルブックをひとつのブックにまとめる方法

複数のExcelブックのSheet1だけを一つの
Excelブックにまとめて
ブックの中のシートには
それぞれのSheet1が並び
Sheet名は元のブック名にする方法

メモ帳で以下をコピペして
拡張子を「vbs」にして実行するだけ

VBScriptなのでWinしか動きません


Option Explicit

' 統合したブックの保存名 パスは各自の設定に
Dim margedBookPath
margedBookPath = "C:\Desktop\tougouBook.xlsx"

' 対象ブック群が保存されているパス
Dim targetPath
targetPath = "C:\Desktop"

' 対象ブックの拡張子 cvsとかも設定可能
Dim targetExtension
targetExtension = "xlsx"

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

' 対象ブックが保存されているパスを参照
Dim targetFolder
Set targetFolder = fso.GetFolder(targetPath)

' Excel 起動
Dim xlApp
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True

' 統合ブックを新規作成
Dim margedBook
Set margedBook = xlApp.Workbooks.Add

' 統合ブックの初期シート数を記憶しておく
Dim initialSheetsCount
initialSheetsCount = margedBook.Worksheets.Count

Dim targetBook

スポンサーリンク

' 対象ブックが保存されているフォルダー内の全てのファイルを精査
Dim f
For Each f In targetFolder.Files
Dim targetSheet ' 対象ブック内のコピー対象シート
Dim copiedSheet ' 統合ブック内のコピーされてきたシート

' ファイルの拡張子が合致すれば
If fso.GetExtensionName(f.Name) = targetExtension Then
' 対象ブックを開き、1枚目のシートを統合ブックにコピーする (右端にコピー)
Set targetBook = xlApp.Workbooks.Open(f.Path, 0, True)
Set targetSheet = targetBook.Worksheets(1)
Call targetSheet.Copy(, margedBook.Worksheets(margedBook.Worksheets.Count))

' コピーされたシートの名前を変更
Set copiedSheet = margedBook.Worksheets(margedBook.Worksheets.Count)
copiedSheet.Name = fso.GetBaseName(targetBook.Name)

' 対象ブックを閉じる
Set targetSheet = Nothing
call targetBook.Close(False)
Set targetBook = Nothing
End If
Next

xlApp.DisplayAlerts = False

' 統合ブックから初期シートを削除する (左端の数枚)
Dim i
For i = 1 To initialSheetsCount
margedBook.Worksheets(1).Delete
Next

' 統合ブックを保存して閉じる
Call margedBook.SaveAs(margedBookPath)
Call margedBook.Close(False)

xlApp.DisplayAlerts = True
xlApp.Quit
Set xlApp = Nothing

一緒に稼ぐ仲間を募集中

ブログに書けない秘密の情報等は
メルマガ限定で配信中です。

一般では手に入らない
3ヶ月で資金を倍にした自動売買ソフトや
投資方法、YouTubeで稼ぐ方法など
無料でシェアしています。

毎月5万円給料以外に収入源が欲しい!
とか、投資やお金に興味のある方は
下の画像↓をクリックして
メルマガに登録してね。

おすすめ記事