2011-12-19 87 views
0

是否有任何可能將Windows默認打印機僅更改爲一個「作業」?沒有Windows XP/Vista/7下的管理權限,它工作嗎?VBA:暫時更改Windows 7默認打印機

什麼我想要做的:

  • 默認打印機是佳能ABC
  • 想通過愛普生XYZ打印
  • 打印後要再次有回我的默認打印機佳能ABC。

如果沒有管理權限,沒有「messageboxes」或UI對話框,它將會是最好的。

應該VBA或(勉強)下在C#中使用/ .NET

+0

你嘗試過什麼來完成這個任務? VBA只允許打印到默認打印機嗎? – 2011-12-19 15:57:48

+0

哪個VBA?版本和產品可能有所不同。 – Fionnuala 2011-12-19 15:58:00

+1

..例如MS Access 2003 http://msdn.microsoft.com/en-us/library/aa223133(v=office.11​​).aspx – Fionnuala 2011-12-19 15:58:46

回答

1

在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"); 
} 

這將打印「你好」到打印機您選擇在對話框中。

+0

您是否有一些關於使用不同打印機打印作業的片段或有用的頁面?我使用哪些參數以及我需要什麼名稱空間? (如果可能的話,它應該只使用.NET 2.0與Win2000兼容的原因,WinXP沒有SP) – 2011-12-19 16:03:29

+0

@DanielAlexanderWeigl:我在回答中添加了一些示例。 – Fischermaen 2011-12-19 16:22:52

+0

感謝您的示例。這幫助了我很多。 – 2012-08-15 11:06:59

0

From訪問幫助:
以下示例使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) 
+0

你是對的,如果它會覆蓋默認的打印機,它會在地球上的地獄:o怎麼樣:「打印與愛普生ABC報告」mybusinessreport「」它會像Application.Printers(「Epson ABC」)? – 2011-12-19 16:24:31

+0

@Daniel:查看編輯 – 2011-12-19 16:58:36

相關問題