MS Access - пытается настроить принтер перед печатью, но по умолчанию остается Печать в PDF - PullRequest
0 голосов
/ 30 ноября 2018

Мой клиент хочет, чтобы я просмотрел его принтеры для печати этикеток и нашел один доступный.

Я не нахожусь в его офисе, поэтому могу по умолчанию установить его на моем локальном принтере, если ни один из его принтеров не найден.За исключением того, что он печатает только в PDF на моем конце.Я даже снял флажок «Разрешить Windows управлять выбором принтера».Это продолжает появляться pdf.

Вот список принтеров на моей машине

0 Send To OneNote 2016
1 PDFill PDF&Image Writer
2 Microsoft XPS Document Writer
3 Microsoft Print to PDF
4 Fax
5 Brother HL-2280DW

Что я делаю не так?

Вот мой код:

Private Sub cmdPrintWTOutgoingLabels_Click()
Dim LABELprinter As Integer


'check that fields are filled in
If Not IsNumeric(Me.cboOutgoingWT) Then
    MsgBox "Please select a work ticket number first"
    Exit Sub
Else

Dim printerFound As Boolean
Dim numprinters As Integer

printerFound = False
numprinters = Application.Printers.Count - 1


For h = 0 To numprinters


    LABELprinter = Hex(h)


    'if it errors, don't run the code that exits the loop
    On Error GoTo stay_in_loop
    Debug.Print LABELprinter & " " & Application.Printers(h).DeviceName
    If Application.Printer.DeviceName = "ZDesigner GK420d on Ne" & CStr(LABELprinter) & ":" Then

        Set Application.Printer = Application.Printer(h) '"ZDesigner GK420d on Ne" & CStr(LABELprinter) & ":"

        printerFound = True

        Exit For

    End If

stay_in_loop:
Next h
'start error trapping again
On Error GoTo 0
If printerFound = False Then
   Set Application.Printer = Application.Printers(5) 'hard coded to my local printer
            'Sheet5.PrintOut
End If

    DoCmd.OpenReport "WT Outgoing Report", acViewNormal

End If

End Sub

1 Ответ

0 голосов
/ 30 ноября 2018

Изменение системного принтера по умолчанию для одной конкретной программы, как правило, ужасно для пользователя.Избегайте изменения Application.Printer!Вместо этого укажите, какой принтер использовать для отчета вместо печати по умолчанию.

Я использую что-то вроде следующего кода для печати отчетов на определенном принтере:

Dim rptName As String
rptName = "WT Outgoing Report"
DoCmd.OpenReport rptName, acViewPreview
Set Reports(rptName).Printer = Application.Printers(5) 'Or some printer returned by your search code
DoCmd.SelectObject acReport, rptName
DoCmd.PrintOut
DoCmd.Close acReport, rptName

Вы также можете жестко-кодируйте, на какой принтер печатать, открыв отчет в режиме конструктора, перейдя к настройке страницы, затем к странице, затем измените принтер в разделе Принтер для MyReportName .

В моем реальном приложении яТакже включен код для изменения таких параметров, как параметры страницы и параметры корзины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...