设置默认打印机
您通常会发现自己在为一台打印机设计报告格式的位置,并且当该报告发送到另一台打印机时,布局变得混乱。
以下代码将允许您通过重置系统默认打印机来指定将报告发送到的打印机。
Windows API /全局声明
Public Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const HWND_BROADCAST = &HFFFF&
Public Const WM_WININICHANGE = &H1A
码
Public Function SetDefaultPrinter(objPrn As Printer) As Boolean
Dim x As Long, sztemp As String
sztemp = objPrn.DeviceName & "," & objPrn.DriverName & "," & objPrn.Port
x = WriteProfileString("windows", "device", sztemp)
x = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0&, "windows")
End Function
Private Sub Command1_Click()
Dim x As Printer
If MsgBox("Are You Sure Want To Set " & Combo1.Text & " as Default printer ? ", vbYesNo, "Attention") = vbYes Then
For Each x In Printers
If x.DeviceName = Combo1.Text Then
SetDefaultPrinter x
Exit Sub
End If
Next
End If
End Sub
Private Sub Form_Load()
Dim x As Printer
Dim y As Integer
y = 0
With Combo1 'Scan all available printer and put them
For Each x In Printers 'in To combo box.
.AddItem x.DeviceName, y
y = y + 1
Next
.ListIndex = 0
End With
End Sub
From: https://bytes.com/topic/visual-basic/insights/641541-set-default-printer
本文提供了一段VBA代码,用于在Windows系统中设置默认打印机。此代码通过调用Windows API函数WriteProfileString和SendMessage,修改注册表中默认打印机的设置,从而确保报告在打印时能正确应用预设的格式。
445

被折叠的 条评论
为什么被折叠?



