どうも。
こんにちは。
【ツール】Excelのフッターやヘッダーを一括で変更できる『Excel Page Setup Utility』
という記事を書きました。こちらの記事のおわりに部分に記載しているvbsです。
指定シートを一括で印刷する
例えば、1つのExcelブックに「変更履歴」シートと、「内容」が記載されているシートがあるとします。
このブックを機能ごとに作成した場合、印刷するときは別に変更履歴シートはいらなかったりします。
そんな時このVBSを使って、「内容」シートだけを印刷しています。
VBSをアップすることができなかったので、以下のコードをエディタにコピペして、『指定シート印刷.VBS』とでも名前をつけて保存してください。
'---------------------ここから------------------------- '変数の宣言 Dim intResult Dim strSheetName Dim intPrintFrom Dim intPrintTo Dim intPrintCopies '--------------------設定----------------------- '印刷したいシート名を入れてください。 strSheetName = InputBox("印刷するシート名を入力してください", "シート名入力", "") '-----------------設定終わり-------------------- '質問を表示 intResult = MsgBox("これらのファイルを印刷しますか?", 3) 'もし、"はい"がクリックされたら If intResult = 6 Then 'ドラッグ&ドロップされたファイルのリストを取得する Set objFiles = Wscript.Arguments 'Excelを起動 Set objExcel = CreateObject("Excel.Application") 'For~Nextループ処理 For Each strFilename in objFiles 'ファイルを開く Set ExcelBook = objExcel.Workbooks.Open(strFilename) 'シート指定 objExcel.Workbooks(1).Sheets(strSheetName).Select '印刷 objExcel.ActiveWindow.SelectedSheets.PrintOut 'ファイルを閉じる objExcel.Workbooks(1).Close Set ExcelBook = Nothing 'ループ続行 Next 'Excel終了 objExcel.quit() Set objExcel = Nothing '完了メッセージ MsgBox("操作が完了しました。") 'Ifブロック終わり End If
どこかで、見かけたコードに一部手を加えたやつです。中身はあんまり理解していませんので、何か不具合があれば個人で頑張ってください。
使い方
こんなExcelブックがあったとします。
これが4ブックあります。一旦これを全選択します。
その状態で、指定シート印刷.VBSにドロップします。
こんなウィンドウがあがるので印刷したいシート名を打ち込んでOKを押して下さい。
その後印刷しますか?のウィンドウがあがるので、「OK」か「はい」か忘れましたが、そっちを押すと印刷します。
毎回印刷するシート名が同じであれば、strSheetNameの部分に値をベタ打ちするといいかもしれません。
全シート印刷する版
最初のシート名指定をコメントアウトするだけですが載せておきます。
'---------------------ここから------------------------- '変数の宣言 Dim intResult Dim strSheetName Dim intPrintFrom Dim intPrintTo Dim intPrintCopies '--------------------設定----------------------- '印刷したいシート名を入れてください。 'strSheetName = InputBox("印刷するシート名を入力してください", "シート名入力", "") '-----------------設定終わり-------------------- '質問を表示 intResult = MsgBox("これらのファイルを印刷しますか?", 3) 'もし、"はい"がクリックされたら If intResult = 6 Then 'ドラッグ&ドロップされたファイルのリストを取得する Set objFiles = Wscript.Arguments 'Excelを起動 Set objExcel = CreateObject("Excel.Application") 'For~Nextループ処理 For Each strFilename in objFiles 'ファイルを開く Set ExcelBook = objExcel.Workbooks.Open(strFilename) 'シート指定 objExcel.Workbooks(1).Sheets.Select '印刷 objExcel.ActiveWindow.SelectedSheets.PrintOut 'ファイルを閉じる objExcel.Workbooks(1).Close Set ExcelBook = Nothing 'ループ続行 Next 'Excel終了 objExcel.quit() Set objExcel = Nothing '完了メッセージ MsgBox("操作が完了しました。") 'Ifブロック終わり End If
おわりに
ちょこちょこ使っています。
インプルな作りなので、使いやすいようにカスタマイズしてください。