VBA:暂时更改Windows 7默认打印机

时间:2011-12-19 15:52:18

标签: c# vba printing default administrator

是否有可能仅针对一个“作业”更改Windows默认打印机?没有Windows XP / Vista / 7下的管理员权限吗?

我想做什么:

  • 默认打印机是Canon ABC
  • 想通过Epson XYZ打印
  • 打印后想要再次取回我的默认打印机Canon ABC。

如果没有管理权限且没有“消息框”或UI对话框,它将会正常工作。

应该在VBA下使用或(在C#/ .NET

下勉强)

3 个答案:

答案 0 :(得分:2)

在C#中,您可以打印到计算机上安装的任何打印机。您无需更改默认打印机。我不确切知道它在VBA中是否相同,但它适用于C#。

修改

由于您的评论,我添加了一些示例,希望能够引导您前进:

public void DoPrint()
{
    var printDialog = new PrintDialog();
    if (printDialog.ShowDialog() == DialogResult.OK)
    {
        var printDocument = new PrintDocument
            {
                DefaultPageSettings = { PrinterSettings = printDialog.PrinterSettings }
            };
        printDocument.PrintPage += OnPrintPage;
    }
}

private void OnPrintPage(object sender, PrintPageEventArgs e)
{
    e.Graphics.DrawString("Hello");
}

这会将“Hello”打印到您在对话框中选择的打印机。

答案 1 :(得分:1)

来自Access帮助:
以下示例使Printers集合中的第一台打印机成为系统的默认打印机,然后报告其名称,驱动程序信息和端口信息。

  Dim prtDefault As Printer
  dim strOldDefault as string
  strOldDefault = Application.printer

  Set Application.Printer = Application.Printers(0)

  Set prtDefault = Application.Printer

  With prtDefault
      MsgBox "Device name: " & .DeviceName & vbCr _
          & "Driver name: " & .DriverName & vbCr _
          & "Port: " & .Port
  End With

编辑:您可以在更改之前轻松保存默认打印机,并在打印后再将其重新设置。此外,由于更改默认打印机是一个缓慢的过程,我建议您在更改之前检查默认打印机是什么,以避免不必要的更改。


保存/恢复:

Dim strOldPrinter As String
'save old printer'
strOldPrinter = Application.Printer.DeviceName
'....do stuff'
'restore old Printer'
Set Application.Printer = Application.Printers(strOldPrinter)

答案 2 :(得分:-1)

因为你没有具体说明你的工作"实际上,我会在这里提供一个更简单的答案。

作为编程方法的替代方法,如果您专门尝试通过某台打印机打印特定的报告,则MS Access中有内置功能可以实现此目的。

只需选择报告的“打印预览”视图,然后选择:

页面设置 - >页面标签 - >使用特定打印机 - >然后浏览并选择!

这最终满足了我的需求,所以希望它也能为你提供帮助。