Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ
前回掲載した「プリンタ一覧を取得する」を利用し、使用するプリンタを切り替えるVBAを掲載しました。 使用するプリンタを切り替えるには、ActivePrinterプロパティを使用します。 ここでは指定したプリンタに切り替え印刷します。 ActivePrinterプロパティの構文 使用しているプリンタ名を返すか、使用するプリンタにセットします。 プリンタ名を取得:Application.ActivePrinter 使用するプリンタにセット:Application.ActivePrinter = アクティブプリンタ名 |
Excelシート画面
プリンタ一覧ボタンをクリックするとプリンタ一覧が表示されます。
C列はプリンタ名、E列は通常使うプリンタならTRUE、そうでなければFALSEと表示されます。
B列にマークを入れ[プリンタの切り替え」ボタンをクリックします。
すると、そのプリンタに切り替え印刷します。
Excel VBA実行コード
■ VBA入力画面
■ VBAコード
Option Explicit
Private Function MyGetPrinterB() As Long
Dim lrow As Long
Dim tobj As Object
Dim tInstPrn As Variant
Dim tprn As Object
lrow = 6
Set tobj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set tInstPrn = tobj.ExecQuery("Select * from Win32_Printer")
For Each tprn In tInstPrn
Cells(lrow, 3) = tprn.Name
Cells(lrow, 4) = tprn.Location
Cells(lrow, 5) = tprn.Default
lrow = lrow + 1
Next
MyGetPrinterB = lrow
End Function
Private Sub MySetPrinterA(sPrn As String)
ActiveSheet.PrintOut ActivePrinter:=sPrn
End Sub
Private Sub MySetPrinterB(sPrn As String)
Dim sPush As String
sPush = Application.ActivePrinter
ActiveSheet.PrintOut ActivePrinter:=sPrn
Application.ActivePrinter = sPush
End Sub
Private Sub CommandButton1_Click()
Dim i As Long
Dim lMaxRow As Long
lMaxRow = MyGetPrinterB
For i = 6 To lMaxRow
If Cells(i, 2) <> "" Then
MySetPrinterA Cells(i, 3)
Exit For
End If
Next
MyGetPrinterB
End Sub
Private Sub CommandButton2_Click()
Dim i As Long
Dim lMaxRow As Long
lMaxRow = MyGetPrinterB
For i = 6 To lMaxRow
If Cells(i, 2) <> "" Then
MySetPrinterB Cells(i, 3)
Exit For
End If
Next
MyGetPrinterB
End Sub
■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します