Имена принтеров очень специфичны - если они введены не так, как ожидает Windows, вы получите сообщение об ошибке. (Поскольку вы не заметили конкретное сообщение об ошибке в своем вопросе, я предполагаю, что именно в этом и заключается проблема; это наиболее вероятная проблема.)
Что я сделал в этой ситуации, так это предоставил пользователю список доступных принтеров. Вы можете использовать этот код для заполнения списка (называемого lstPrinters):
Private Sub LoadPrintersListBox()
Dim prtLoop As Printer
Dim strListRowSource As String
For Each prtLoop In Application.Printers
strListRowSource = strListRowSource + prtLoop.DeviceName + ";"
Next prtLoop
lstPrinters.RowSource = strListRowSource
End Sub
Затем вы можете использовать выбор пользователя для установки принтера. (В этом коде предполагается, что доступна кнопка с именем cmdSetPrinter, которую пользователь щелкнет после выбора принтера.)
Private Sub cmdSetPrinter_Click()
Application.ActivePrinter = lstPrinters.Column(0)
End Sub
Вы можете быть уверены, что принтеры в списке названы в соответствии с потребностями системы, и вам не нужно беспокоиться об опечатках.