変更履歴シートなど複数のExcelファイルに一律で他のブックのシートをコピーするVBA。
'--------------------------------------------------------------------------------------
'
' Excel シートをコピー
' コピー元の指定したシートをフォルダ内のすべてのブックにコピーします
'
' 注意点 スクリプト実行前にすべてのExcelアプリケーションを終了してください。
' スクリプト実行中はマウス、キーボードを使用しないでください。
' このスクリプトが異常終了した場合はExcelのプロセスを手動で終了してください。
'
'--------------------------------------------------------------------------------------
'★コピー元シートのファイル
Const COPY_EXCEL = "C:\work\copyfile.xlsx"
Const COPY_SHEET = "hist"'★追加したいEXCELの格納フォルダ
Const SAVE_DIR = "C:\work\copy\"
'コピー元Excelを開く
Set Excel = CreateObject("Excel.Application")
Set wkdirBook = Excel.WorkBooks.Open(COPY_EXCEL)'このディレクトリのファイル一覧を取得する
Set fileSystem = CreateObject("Scripting.FileSystemObject")
Set targetFolder = fileSystem.getFolder(SAVE_DIR)
Set fileList = targetFolder.Files
'ファイルの終端までループ
For Each wkFile In fileList'対象ファイルがExcelならExcelで開く★(Excelのバージョンによっては書き換える必要がある)
'if wkFile.type = "Microsoft Excel 97-2003 ワークシート" then'コピー先のファイルを開く
Set wkBook = Excel.WorkBooks.Open(wkFile)
Set wkSheet = wkBook.Sheets(1)'シートをコピー
wkdirBook.Sheets("hist").Copy wkSheet
wkBook.save'コピー先のファイルを終了する。
wkBook.Close savechanges=true
Set wkBook = Nothing'end if
Next
'コピー元のファイルを終了する。
wkdirBook.Close savechanges=false
Set wkdirBook = NothingExcel.Quit
Set Excel = Nothingmsgbox "end"