2011-12-19 19 views
0

Windowsのデフォルトプリンタを1つの「ジョブ」のみに変更する可能性はありますか? Windows XP/Vista/7では管理権限を持たないと機能しますか?私は何をしたいかVBA:Windows 7のデフォルトプリンタを一時的に変更する

  • デフォルトのプリンタはキヤノンABC
  • が再び私のデフォルトのプリンタキヤノンABCをバック有することにしたい印刷後エプソンXYZ
  • を経由して印刷したいです。

「管理者権限がなくても、メッセージボックスやUIダイアログなしでうまくいくかどうか」

は、C#ではC#/。NET

+0

あなたは、このタスクを達成しようとしたでしょうか? VBAはデフォルトのプリンタにのみ印刷できますか? –

+0

どのVBA?バージョンと製品には違いがあります。 – Fionnuala

+1

..例えばMS Access 2003 http://msdn.microsoft.com/en-us/library/aa223133(v=office.11​​).aspx – Fionnuala

答えて

1

下VBAの下、または(しぶしぶ)使用する必要がありますがコンピュータにインストールされている任意のプリンタに印刷することができます。デフォルトのプリンタを変更する必要はありません。私はそれが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

別のプリンタでジョブを印刷する場合のスニペットや役立つページはありますか?どのようなパラメータを使用し、どの名前空間が必要ですか? (可能であれば、Win2000との互換性の.NET 2.0の原因、SPなしのWinXPのみを使用する必要がある場合) –

+0

@DanielAlexanderWeigl:答えに少しサンプルを追加しました。 – Fischermaen

+0

サンプルをありがとう。それは私をたくさん助けました。 –

0

アクセスヘルプから:
次の例では、プリンタコレクション内の最初のプリンタをシステムの既定のプリンタにし、その名前、ドライバ情報、およびポート情報を報告します。

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:「EPSON ABCレポート "mybusinessreport"で印刷すると、Application.Printers( "Epson ABC")のようになりますか? –

+0

@Daniel:編集を参照 –

関連する問題