Home > Excel VBA Macro 印刷 > FAQ

「ActivePrinterメソッドは失敗しました」のエラーが出るが?

Question 59.5 Excel VBA Borad (掲示板)より Previous Next
以下の文で実行時エラーになってしまいます。

  Application.ActivePrinter = Range("PRTNAME").Value

---------------
エラー:実行時エラー '1004'
ActivePrinter'メソッドは失敗しました。'_Application'オブジェクト
---------------

他のPCでは正常に処理されます。 私の環境のどこを見ればいいかご存じの方は教えてください。
両PCともにバージョンはExcelXPです。
Answer  Excel 2002 Copyright (C) 2003.3.20 永井善王
Windows XPのメッセージボックス わずか 1行のコードですが、いくつかチェックポイントがあります。

1. 両PCの OSのバージョンは?
Excel XP(2002)は、OSが Windows XPか または Me(98含む)かによって画面表示が大きく異なりますし、ご質問のプリンター制御にも相違点があります。
Windows Meのメッセージボックス 同一のプリンターを使用している場合にアクティブプリンターの名前を表示すると、
Windows XPパソコンでは右上図のデザインのメッセージボックスが表示されるのに対し、
Windows Meパソコンでは、右下図のメッセージに変わります。

ここで注目すべき点は、プリンター名も変わっていることです。
これら 2つの図は、下記のマクロで表示したものです。
Sub アクティブプリンターの名前を取得して表示する()
    MsgBox "現在使用しているプリンター名は " & Application.ActivePrinter
End Sub
2. アクティブプリンターの名前が 'PRTNAME' と名付けられたセルに正しく入っているか?
名前ボックスとアクティブプリンターの名前
例えば左図のように、A1セルに 'PRTNAME' という名前が正しく定義されているとして、そのセルには上記 1.のアクティブプリンターの名前が正しく入力されている必要があります。
もしも、Windows XP環境で作成されたブックのマクロを Windows Me環境で実行しようとしているならば、そのセルの値を修正して整合性を保つ必要があります。
名前の定義ダイアログボックス
3. 名前が正しく定義されているか?
提示されたコードのイコール記号の右辺は、
Range("PRTNAME").Value で、セルに付けられた名前で範囲選択しています。

仮に、これが正しく定義されていないとすると異なるエラーになりますから、まず、心配はないでしょうが一応、再チェックしておきましょう。
【参考ページ】
アクティブ プリンターを選択して設定するには

Excel VBA Macro