どうも。
こんにちは。
【ツール】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
おわりに
ちょこちょこ使っています。
インプルな作りなので、使いやすいようにカスタマイズしてください。



