ExcelでシートをコピーするWSH

変更履歴シートなど複数の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 = Nothing

    Excel.Quit
    Set Excel = Nothing

    msgbox "end"