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



