通过Excel中的VBA进行打印机设置

时间:2010-03-26 20:38:40

标签: excel-vba vba excel

我正在尝试在Excel中指定一个单元格,供用户输入要打印输出的打印机名称,然后在

中使用该值
Application.ActivePrinter = (use the cell value)

即使我已经完成了为单元格指定名称并在变量中使用它的编程,但它给了我一个错误。

我已将变量设置为字符串,文本,对象和变体,但它无效。

您知道我应该使用哪些代码来执行此操作吗?

3 个答案:

答案 0 :(得分:3)

如果没有所有细节我会猜测用户没有输入打印机所需的所有信息。在我们的网络上,我们的打印机已设置好,因此您需要打印服务器,打印机名称和网络名称才能获得正确的打印效果。在即时窗口中,尝试以下代码行,以了解如何在电子表格中输入打印机。

debug.Print application.ActivePrinter

您可能希望通过提供服务器和网络信息来帮助用户(如果所有打印机都是相同的话)。在我的办公室,你会使用这样的东西:

Application.ActivePrinter = "\\printserver\" & _
                            range("printername").value & " on Ne05:"

答案 1 :(得分:1)

打印机名称非常特别 - 如果没有像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

您可以确信列表中的打印机是根据系统需要命名的,您无需担心打字错误。

答案 2 :(得分:1)

如果您遇到有问题的打印机没有安装在他们的计算机上的问题,这段代码可以为您解决问题:

Set WshNetwork = CreateObject("WScript.Network")
PrinterPath = "\\SERVER\PRINTER
WshNetwork.AddWindowsPrinterConnection PrinterPath