Excel Book統合


指定したフォルダ内にある複数のブックを1つのブックにまとめる

'--------------------------------------------------------------------------------------
'
'	Excel Book統合
'			(指定したフォルダにあるExcelファイルを1つのファイルにまとめる)
'	
'	注意点	スクリプト実行前にすべてのExcelアプリケーションを終了してください。
'			スクリプト実行中はマウス、キーボードを使用しないでください。
'			このスクリプトが異常終了した場合はExcelのプロセスを手動で終了してください。
'
'--------------------------------------------------------------------------------------
'不要シート削除用定数
const DEL_SHEET_NAME = "delete用ワーク"
'作成されるファイル名
const OUT_FILE_NAME = "result.xls"


targetPath = InputBox("出力対象のディレクトリを入力","ディレクトリの指定","")

if targetPath = "" then
	
	msgbox "出力を中止しました。"

else


	Set Excel  = CreateObject("Excel.Application")
    	Set wkBook = Excel.WorkBooks.Add()

	'不要シートの削除の前処理
	For i = 1 to wkBook.WorkSheets.Count
		wkBook.Sheets(i).name = DEL_SHEET_NAME 
	Next

	'このディレクトリのファイル一覧を取得する
	Set fileSystem   = CreateObject("Scripting.FileSystemObject")
	Set targetFolder = fileSystem.getFolder(targetPath)
	Set fileList = targetFolder.Files

	'ファイルの終端までループ
	For Each wkFile In fileList

		'対象ファイルがExcelならExcelで開く
		if wkFile.type = "Microsoft Excel ワークシート" then

			Set copyBook = Excel.WorkBooks.Open(wkFile)

			'シートの数ループする
			For i = 1 to copyBook.WorkSheets.Count
				copyBook.Sheets(i).Copy(wkBook.Sheets(wkBook.Sheets.Count))
			Next

			copyBook.Close

		end if

	Next

	'不要シートの削除
	For i = 1 to wkBook.WorkSheets.Count
		if wkBook.Sheets(i).name = DEL_SHEET_NAME  then
			wkBook.Sheets(i).delete
		end if
	Next

	'Excelを終了する。
	wkBook.SaveAs targetPath & "\" & OUT_FILE_NAME
	Excel.Quit


	msgbox "出力を完了しました。"

end if

動作確認環境:WindowsXP sp2,Excel2003