VBAでPrintOutメソッドを使って印刷する機会は多いと思います。
ですが、PrintOutメソッドで印刷を実行するとエラーが出て困ったことはありませんか?
今回はPrintOut時にエラーが発生するときの対処方法について徹底的に説明していきます。
PrintOut時にエラーが発生するときの対処方法
PrintOut時にエラーが発生する原因
PrintOutメソッドを使用してエラーが発生する原因として、以下のものが考えられます。
- 印刷するワークシートが非表示になっている
- プリンタ名やポート番号が違う
- ブックが保護されている
これらの原因の対処方法について詳しく説明していきます。
印刷するワークシートが非表示になっている
印刷しようとしている対象のワークシートが非表示になっていると「実行時エラー’1004’」のエラーになってしまいます。
対処方法としては、PrintOutメソッドを実行する前に、Visibleプロパティを「True」にしてワークシートの非表示を解除することが挙げられます。
例えば印刷するシートがSheet1の場合には、以下のコードになります。
Sub ワークシートを非表示を解除する()
Sheets("Sheet1").Visible = True
Sheets("Sheet1").PrintOut
End Sub
エラー防止のために、PrintOutメソッドを実行する前には必ずVisibleプロパティを「True」にするのも良い方法かもしれません。
プリンタ名やポート名が違う
PrintOutメソッドで使用するプリンタを指定するには、引数ActivePrinterでプリンタ名を記述する必要があります。
※ただし、引数ActivePrinterを省略して場合は、「現在使用しているプリンター」が指定されます。
したがって、指定したプリンタ名が間違っているとエラーが発生してしまいます。
プリンタ名を調べるには、以下の手順で行います。
(1)エクセルのシート上で「ファイル」メニューを選択する。
(2)「印刷」を選択し、プリンターの項目で使用したいプリンターを選択する。
(3)VBEで以下のコードを記述し、実行する。
Sub プリンタ名を調べる()
MsgBox Application.ActivePrinter
End Sub
(4)メッセージボックスに指定した「現在使用しているプリンター」のプリンタ名及びポート名が表示される。
以上のように調べたプリンタ名を、PrintOutメソッドの引数ActivePrinterに記述します。
ブックが保護されている
ブックが保護されていることが原因で、印刷用シートへのアクセスがブロックされエラーとなる場合があります。
対処方法としては、エクセルのシート上の「校閲」メニューから「ブックの保護」をクリックし解除します。
【まとめ】PrintOut時にエラーが発生するときの対処方法
PrintOut時にエラーが発生する原因としては、以下のことが考えられます。
- 印刷するワークシートが非表示になっている
- プリンタ名やポート名が違う
- ブックが保護されている
PrintOutメソッドは頻繁に使用するものなので、今回の方法を覚えておくことは決して損ではないですよ。
参考:Excel VBA入門 その62:PrintOutを使って両面印刷をする方法
コメント
[…] 参考:Excel VBA入門 その61:PrintOut時にエラーが発生するときの対処方法 […]