关键是要找到所有打印机,然后选择需要用的打印机把它设置为默认打印机!
我也提供个做法
Const HWND_BROADCAST = &HFFFF&
Const WM_WININICHANGE = &H1A
Private Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
Private Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Dim S As String, Length As Long, hKey As Long
S = String(80, Chr(0))
PrinterName = "你要选择的打印机名称"
S = String(80, Chr(0))
Length = GetProfileString("devices", PrinterName, "", S, Len(S))
S = Left(S, Length)
Call WriteProfileString("windows", "device", PrinterName & "," & S)
Call SendMessage(HWND_BROADCAST, WM_WININICHANGE, &H7FFF&, ByVal "windows")
Dim X As Printer
For Each X In Printers
If X.DeviceName = "AGFA-AccuSet v52.3" Then
'设定为系统缺省打印机。
Set Printer = X
Debug.Print "缺省打印机已经设为AGFA-AccuSet v52.3"
Exit For
End If
Next
从printers集合中选择!
Dim X As Printer
For Each X In Printers
If X.Orientation = vbPRORPortrait Then
'设定为系统缺省打印机。
Set Printer = X
' 终止查找打印机。
Exit For
End If
Next