Excel

Excelで指定したシートを一気に印刷するvbsと全シート印刷するvbs

どうも。

こんにちは。

【ツール】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

どこかで、見かけたコードに一部手を加えたやつです。中身はあんまり理解していませんので、何か不具合があれば個人で頑張ってください。

使い方

2016-07-24 10_12_18-機能A.xlsx - Microsoft Excel

こんなExcelブックがあったとします。

2016-07-24 10_14_53-Program Manager

これが4ブックあります。一旦これを全選択します。

2016-07-24 10_15_55-Excel印刷 - X-Finder

その状態で、指定シート印刷.VBSにドロップします。

2016-07-24 10_16_28-シート名入力

こんなウィンドウがあがるので印刷したいシート名を打ち込んで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

おわりに

ちょこちょこ使っています。

インプルな作りなので、使いやすいようにカスタマイズしてください。

スポンサーリンク

-Excel

© 2021 ぱそやんうぇぶ