VBA|PrintOut時にエラーが発生するときの対処方法

エクセルVBA VBAのエラー対応方法



VBAでPrintOutメソッドを使って印刷する機会は多いと思います。

ですが、PrintOutメソッドで印刷を実行するとエラーが出て困ったことはありませんか?

今回はPrintOut時にエラーが発生するときの対処方法について徹底的に説明していきます。



PrintOut時にエラーが発生するときの対処方法

PrintOut時にエラーが発生する原因

PrintOutメソッドを使用してエラーが発生する原因として、以下のものが考えられます。

  1. 印刷するワークシートが非表示になっている
  2. プリンタ名やポート番号が違う
  3. ブックが保護されている

これらの原因の対処方法について詳しく説明していきます。

印刷するワークシートが非表示になっている

印刷しようとしている対象のワークシートが非表示になっていると「実行時エラー’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を使って両面印刷をする方法

コメント

  1. […] 参考:Excel VBA入門 その61:PrintOut時にエラーが発生するときの対処方法 […]

タイトルとURLをコピーしました