人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excel VBA についての質問です。
VBAを使って印刷ボタンを作ったのですが、デフォルトのプリンタが無い場合(インストールされていないetc...)はエラーが返されます。

そこで、プリンタがインストールされていない状態では処理を行わないマクロにしたいのですが、どのように組んだらよいのでしょうか?

ボタンを押す>ページ設定>印刷範囲の設定>印刷開始
という一連の動作で、ページ設定でエラーが出るので、そこに「On Error GoTo PrtOpen_Err」等を入れれば処理はストップすしますが
ページ設定はマクロでは少し時間がかかります。4項目ほど設定すると2?3秒止まってしまいます。

なので、その処理に入る前にプリンタのインストール有無を判断し、回避させたいと考えています。

●質問者: nyankochan
●カテゴリ:コンピュータ
✍キーワード:etc. Excel GOTO ON VBA
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ardarim
●45ポイント

単純に Application.ActivePrinter をチェックすればよいのではないでしょうか?


もしだめなら、以下のような方法があります。

インストールされているプリンタドライバの数を取得するサンプルです。

Sub test()

 MsgBox "インストールされているプリンタの数: " & GetPrinterDriverCount()

End Sub

Function GetPrinterDriverCount() As Long
 
 Dim objWMIService As Object
 Dim colInstalledPrinters As Object

 Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\.\root\cimv2")
 Set colInstalledPrinters = objWMIService.ExecQuery _
 ("Select * from Win32_PrinterDriver")
 
 GetPrinterDriverCount = colInstalledPrinters.Count
 
End Function

(参考)プリンタ ドライバの列挙

◎質問者からの返答

ありがとうございます、これを基にインストールされていても設定が上手くされていない場合も判断するものを作成させていただきます。


2 ●
●25ポイント

Application.ActivePrinterの値をチェックしてみてはいかがでしょうか。

プリンタドライバが全くインストールされていない状態でどんな値を返すのか確認できておりませんが、空文字列ではないでしょうか。

If Application.ActivePrinter = "" Then
 MsgBox ("No printer installed.")
 Exit Sub
Else
 ' 処理
End If

動作未確認ですので、外していたらスミマセン。

[参考URL]

◎質問者からの返答

インストールされていない状態であると、「コントロールパネルを確認してください。既定値のプリンタ」と入るようです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ