Freigeben über

Duckerwechsel per VBA

Anonym
2010-11-11T15:58:37+00:00

Hallo,

Win7, Excel2010, 1 physikalischer Drucker, 2 dazugehörige Druckertreiber mit verschiedenen Einstellungen der Papierquelle. Mit dem laufendem Makrorekorder wird der Druckerwechsel und Druck durchgeklickt. Jedoch wird der Druckerwechsel nicht aufgezeichnet, nur der Druck. Bei WinXP und Excel2007 funktioniert dies reibungslos. Auch mit application.activeprinter = komme ich nicht weiter, immer wieder Fehlermeldung.

Wie kann der Drucker gewechselt werden? Danke.

Gruß,

Boris

Microsoft 365 und Office | Excel | Für Zuhause | Windows

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.

0 Kommentare Keine Kommentare

Antwort, die vom Frageautor angenommen wurde

Anonym
2010-11-11T23:53:58+00:00

Hallo Boris,

dazu muss dir zunächst der Name der möglichen Drucker bekannt sein. Das folgende Makro ermittelt die verfügbaren Drucker und listet sie im Direktbereich (Strg+G) der VBA-Entwicklerumgebung auf:

Sub DruckerAuflisten()

Dim wshNetwork As Object

Dim Druckers

Dim intI

  Set wshNetwork = CreateObject("WScript.Network")

  Set Druckers = wshNetwork.EnumPrinterConnections

  For intI = 0 To Druckers.Count - 1 Step 2

    Debug.Print Druckers.Item(intI + 1)

  Next

End Sub

Ist der Druckername bekannt setzt du ihn in dein Makro ein:

Sub Drucken()

Dim wshNetwork As Object

Const Drucker1 As String = "Microsoft XPS Document Writer"

Const Drucker2 As String = "Microsoft Office Document Image Writer"

  Set wshNetwork = CreateObject("WScript.Network")

  wshNetwork.SetDefaultPrinter Drucker2

  ActiveSheet.PrintOut

End Sub

Je nach deinen Wünschen kannst du aus den beiden Makros auch eine Kombination erstellen.

Mit freundlichem Gruß aus der Rattenfängerstadt Hameln

Frank Arendt-Theilen

(www.at-exceltraining.de)


Ist deine Frage mit diesem Beitrag beantwortet, markiere sie für alle Mitleser als Antwort . (Du kannst auch mehrere Beiträge als Antwort markieren)

War diese Antwort hilfreich?

3 Personen fanden diese Antwort hilfreich.
0 Kommentare Keine Kommentare

3 zusätzliche Antworten

Sortieren nach: Am hilfreichsten
  1. Anonym
    2015-09-16T19:50:54+00:00

    Hallo,

    zu diesem Thema habe ich folgende Frage: Ich arbeite in einer Terminal-Umgebung, die Druckerbezeichnungen wechseln laufend. Ich möchte die Drucker nicht als hart im Makro bezeichneten Textstring, sondern als Variable übergeben:

    Sub test()

    strPrinterStd = Application.ActivePrinter

    MsgBox strPrinterStd

    pdf = "FreePDF"     ' an Ne03:"

    Dim wshNetwork As Object

    Const Drucker1 As String = "freepdf"

    Const Drucker2 As String = "Microsoft Office Document Image Writer"

    Const Drucker3 As String = pdf       -------------> Variable = Fehlermeldung, weil Const...

      Set wshNetwork = CreateObject("WScript.Network")

      wshNetwork.SetDefaultPrinter Drucker1

      ActiveSheet.PrintOut

    End Sub

    Gibt es andere Möglichkeiten? Application.ActivePrinter = Variable funktioniert eben auch nicht mehr nach 2003

    Viele Grüße

    Thomas

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare
  2. Anonym
    2010-11-11T19:52:18+00:00

    Hallo,

    danke für den VBA-Code. Leider habe ich es nicht genauer beschrieben, ich dachte daran, den Drucker in VBA anzugeben, damit ein Wechsel ohne Benutzerdialog erfolgen kann (dieser Code funktioniert tadellos).

    Vielleicht noch eine Idee?

    Danke.

    Gruß,

    Boris

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare
  3. Anonym
    2010-11-11T17:54:24+00:00

    Hallo,

    folgender VBA-Code:

    Sub SelectPrinter()

    Dim strPrinter As String

       strPrinter = Application.ActivePrinter

       Application.Dialogs(xlDialogPrinterSetup).Show

       'weitere Aktionen

       '...

    End Sub

    Mit freundlichem Gruß aus der Rattenfängerstadt Hameln

    Frank Arendt-Theilen

    (www.at-exceltraining.de)


    Ist deine Frage mit diesem Beitrag beantwortet, markiere sie für alle Mitleser als Antwort . (Du kannst auch mehrere Beiträge als Antwort markieren)

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare