8

みなさん、こんにちは。

WinActorのシナリオで、実行端末のプリンタ設定がわからない、でもシナリオで利用したいプリンタが決まっている業務の自動化など、

作ったことはあるかと思います。

シナリオ上で、プリンタ操作をするのも1案です。

でも、シナリオが実行開始時の既定のプリンタを取得して、実行中はシナリオで利用したいプリンタに変更し、

シナリオ終了時に最初のプリンタに戻せたら、ある意味、楽だとは思いませんか?

という事で、踊ってみました!

今回は、スクリプト実行機能で、2つのライブラリを自作します。

①:既定のプリンタを取得する機能

②:指定した名前のプリンタに既定のプリンタを設定する機能

※参考URL

http://www.wmifun.net/

①のスクリプトは以下になります。

Option Explicit

'WMIにて使用する各種オブジェクトを定義・生成する。
Dim oClassSet
Dim oClass
Dim oLocator
Dim oService
Dim namePrinter

'ローカルコンピュータに接続する。
Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer
'クエリー条件を WQL にて指定する。
Set oClassSet = oService.ExecQuery("Select * From Win32_Printer")

'コレクションを解析する。
For Each oClass In oClassSet

If oClass.Default = True then
namePrinter = oClass.Caption
Exit For
End If
Next

SetUMSVariable $既定のプリンタ名$, namePrinter

'使用した各種オブジェクトを後片付けする。
Set oClassSet = Nothing
Set oClass = Nothing
Set oService = Nothing
Set oLocator = Nothing

②のスクリプトは以下になります。

Option Explicit

'WMIにて使用する各種オブジェクトを定義・生成する。
Dim oClassSet
Dim oClass
Dim oLocator
Dim oService
Dim printer : printer = !設定するプリンター名!

'ローカルコンピュータに接続する。
Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer
'クエリー条件を WQL にて指定する。
Set oClassSet = oService.ExecQuery("Select * From Win32_Printer Where Name = """ & printer & """")

'コレクションにて、設定する。
For Each oClass In oClassSet

oClass.SetDefaultPrinter()

Next

'使用した各種オブジェクトを後片付けする。
Set oClassSet = Nothing
Set oClass = Nothing
Set oService = Nothing
Set oLocator = Nothing

以上、資料を紙で出力するケースなど、まだまだ需要があるかと思います。

これにて、シナリオでプリンタを設定する動作を組み込む必要はなくなりますね!!

注意:スクリプトの内容は、参考としてお受け取りいただけますようお願いいたします。

S.N 質問の投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。