非表示にできる< 目次 >
本記事で出来ること
はじめに
VBA動作時の環境って?
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Sub 対象EXCELの全シートを印刷() Dim rtn As String MsgBox "印刷するファイルを選択して下さい" '現在開いているEXCELが一覧で表示されます。 '処理対象のEXCELを選択すると変数 rtnに格納されます。 rtn = Application.Dialogs(xlDialogActivate).Show 'rtnがFalse=EXCELが選択されたなかった場合はVBAがExit Subで完了します。 If rtn = False Then Exit Sub End If 'rtn(選択しEXCELファイル)の全てのワークシートを選択されます。 '注意点:rtn内に非表示シートがある際 エラーとなります。 Worksheets.Select '印刷可否の最終確認 If MsgBox("印刷します。よろしいですか?", vbYesNo) = vbNo Then MsgBox ("中断しました。") Exit Sub End If 'rtn のEXCELファイルをすべて印刷します。 '尚、Copies:=1 は部数1の意味 ' Collate:=True は部数単位で印刷するの意味 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub |
解説
1 2 3 |
Sub 対象EXCELの全シートを印刷() Dim rtn As String MsgBox "印刷するファイルを選択して下さい" |
↑のコード実行後の画面↓

1 2 3 |
'現在開いているEXCELが一覧で表示されます。 '処理対象のEXCELを選択すると変数 rtnに格納されます。 rtn = Application.Dialogs(xlDialogActivate).Show |
↑のコード実行後の画面↓

1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
'rtnがFalse=EXCELが選択されたなかった場合はVBAがExit Subで完了します。 If rtn = False Then Exit Sub End If 'rtn(選択しEXCELファイル)の全てのワークシートを選択されます。 '注意点:rtn内に非表示シートがある際 エラーとなります。 Worksheets.Select '印刷可否の最終確認 If MsgBox("印刷します。よろしいですか?", vbYesNo) = vbNo Then MsgBox ("中断しました。") Exit Sub End If |
↑のコード実行後の画面↓

1 2 3 4 5 6 |
'rtn のEXCELファイルをすべて印刷します。 '尚、Copies:=1 は部数1の意味 ' Collate:=True は部数単位で印刷するの意味 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub |
おわりに
利用者に都度EXCELファイルを選択させる方式でVBAを組む
そしてそれは依頼側が抱える「得体のしれないストレス」を軽減することができ、満足度を向上することにも繋がります。
「得体のしれないストレス」とは、発生したエラーが プログラム側が原因なのか、自身が原因のものなのか、問題の切り分けが難しいことから生じる 「何をどうしたらいいか分からない」状態のことです。