Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Drucker mit VBA ändern

Drucker mit VBA ändern
20.04.2021 16:05:16
Andreas
Hi zusammen,
habe in einer Datei eine VBA, die für diese Datei einen Drucker nutzt, der nicht als Windows-Standartdrucker hinterlegt ist.
Funktioniert auch alles super, aber hätte gerne, dass danach wieder der Standartdrucker aktiviert wird.

Sub DruckeBereich()
Dim strDruckerAktiv As String
Application.ActivePrinter = "TEC B-SA4T (203 dpi) auf Ne02:" 'ActivePrinter: Ausdruck = "TEC B-SA4T (203 dpi) auf Ne02:"
strDruckerAktiv = Application.ActivePrinter
Dim i, max As Integer, vz, bz
max = Sheets("Eingabe").Range("C6").Value
If max  40 Then max = 40
For i = 1 To max
vz = i * 2 - 1: bz = i * 2
Worksheets("Palettenaufkleber").Range("A" & vz & ":D" & bz).PrintOut Copies:=1 'PrintOutPreview
Next i
max = Sheets("Eingabe").Range("C8").Value
If max  500 Then max = 500
For i = 1 To max
vz = i * 2 - 1: bz = i * 2
Worksheets("PE-Aufkleber Einzel").Range("A" & vz & ":D" & bz).PrintOut Copies:=1 'PrintPreview
Next i
End Sub

Vielen Dank Vorab
Gruß Andreas
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Drucker mit VBA ändern
20.04.2021 16:11:04
Hajo_Zi
Hallo Andreas,
nach folgendem Prinzip

Sub Faxen()
savPrinter = ActivePrinter		' aktuellen Drucker auslesen
ActivePrinter = "WinFax Pro 9.0"	' anderen Drucker einstellen
ActiveDocument.PrintOut Background:=False	' actives Dokument drucken in Word
ActivePrinter = savPrinter				' Drucker wieder zurückstellen
End Sub
GrußformelHomepage
Anzeige
AW: Drucker mit VBA ändern
21.04.2021 09:03:10
Andreas
Guten Morgen Hajo,
Danke für deine Rückmeldung und den Lösungsvorschlag.
Leider bin ich noch sehr unerfahren was VBA angeht.
Habe noch einen zweiten Vorschlag bekommen, bei dem mir direkt meine VBA umgebaut wurde, diese hat funktioniert.
Deshalb hab ich dann nicht versucht deinen auch noch einzubauen, Danke dir für dein Verständnis.
Gruß Andreas
Anzeige
AW: Drucker mit VBA ändern
20.04.2021 17:18:35
Herbert_Grom
Hallo Andreas,
probiers mal damit:

Sub DruckeBereich()
Dim strDruckerAktiv$, i%, max%, vz, bz, sStdDrucker$
'*Standarddrucker sichern
sStdDrucker = Application.ActivePrinter
Application.ActivePrinter = "TEC B-SA4T (203 dpi) auf Ne02:"
'ActivePrinter: Ausdruck = "TEC B-SA4T (203 dpi) auf Ne02:"
strDruckerAktiv = Application.ActivePrinter
max = Sheets("Eingabe").Range("C6").Value
If max  40 Then max = 40
For i = 1 To max
vz = i * 2 - 1: bz = i * 2
Worksheets("Palettenaufkleber").Range("A" & vz & ":D" & bz).PrintOut 'PrintPreview
Next i
max = Sheets("Eingabe").Range("C8").Value
If max  500 Then max = 500
For i = 1 To max
vz = i * 2 - 1: bz = i * 2
Worksheets("PE-Aufkleber Einzel").Range("A" & vz & ":D" & bz).PrintOut 'PrintPreview
Next i
'*Standarddrucker wieder herstellen
Application.ActivePrinter = sStdDrucker
End Sub
Servus
Anzeige
AW: Drucker mit VBA ändern
21.04.2021 08:59:11
Andreas
Guten Morgen Herbert,
Danke für deine Zeilen, hab ich so übernommen und funktioniert. Vielen Dank.
Eine Verständnisfrage, du hast diese Zeile gestrichen:
Dim i, max As Integer, vz, bz
Wenn man sie aktiv lässt funktioniert es auch nicht, habe sie daher natürlich auch gelöscht.
Aber eigentlich war ich der Meinung, diese Zeile wäre wichtig?
Kannst du mir erklären was sie bedeutet und wieso ich diese nicht mehr benötige?
Vielen Dank vorab
Gruß Andreas
Anzeige
AW: Drucker mit VBA ändern
21.04.2021 09:32:58
Herbert_Grom
Hallo Andreas,
hast du dir meinen Code wirklich genau angesehen? Deine Dimensionierungen sind immer noch vorhanden, aber da wo sie hingehören, nämlich ganz oben! Du solltest auch noch vz, bz, in vz% und bz% ändern! Wenn für Variablen keine Dimensionierung angegeben wird (hatte ich noch für vz und bz vergessen!), dann werden Variablen als "Variant" dimensioniert. Hier eine kleine "Variablen-Info":
Anstatt "as ..." etc., kann man die folgenden Kürzel verwenden:
$ für "as String"
@ für "as Currency" mit 4 Nachkommastellen, ist genauer als "Double"!
# für "as Double" mit Fließkommastellen.
% für "as Integer" max "32.767", ohne Nachkommastellen
& für "as Long" größer als integer, ohne Nachkommastellen
"as Variant" kann man sich ganz sparen, denn ohne weitere Angabe wird jede Variable als "Variant" behandelt!
Ich stelle dabei dem Variablen-Namen den 1. Buchstaben der Variablen-Bezeichnung voran. Damit weiß ich immer, welche Art von Variable ich da vor mir habe. Außerdem versuche ich kryptische, abgekürzte Variablennamen, so gut es geht, zu vermeiden, denn so wird der Code sehr viel lesbarer! Auch für mich selbst!
Denn nach Monaten oder sogar Jahren, kann ich selbst meinen Code sonst nur sehr viel schwerer lesen.
Speicherverbrauch der einzelnen Variablentypen:
Integer 2 Byte Ganzzahlen -32.768 bis 32.767
Long 4 Byte Ganzzahlen -2.147.483.648 bis 2.147.483.647
LongLong 8 Byte Ganzzahlen ca. ± 9 Trillionen
Currency 8 Byte skalierte Ganzzahlen ca. ± 9 Billionen, 4 Nachkommastellen
Double 8 Byte Gleitkommazahl
Date 8 Byte Datum und Zeit
Object 4 Byte abhängig vom Objekt
String Anz. Zeichen * 2 Texte
Currency ist intern eine Ganzzahl, die durch 10.000 geteilt wird und 4 feste Nachkommastellen hat. Im Gegensatz zu „normalen“ Fließkommazahlen ist das ein sehr genaues Rechenverfahren und daher besonders im Zusammenhang mit Geldbeträgen zu empfehlen.
Servus
Anzeige
AW: Drucker mit VBA ändern
21.04.2021 09:38:52
Andreas
Achja, da ganz oben ist es ja.
Hab das jetzt so angepasst:
Dim strDruckerAktiv$, i%, max%, vz%, bz%, sStdDrucker$
Warum hab ich allerdings noch nicht ganz verstanden.
Was ist den der Unterschied zwischen Variable und Variante?
Gruß Andreas
AW: Drucker mit VBA ändern
21.04.2021 09:41:41
Herbert_Grom
Lies doch mal bitte meinen Text genau und lass das "e" bei "Variant e" weg, denn es ist eine Variable, die als Variant dimensioniert wurde!
Anzeige
AW: Drucker mit VBA ändern
21.04.2021 14:58:25
Andreas
Alles klar Herbert.
Danke dir und einen schönen Mittag noch.
Gruß Andreas
;
Anzeige
Anzeige

Infobox / Tutorial

Drucker mit VBA ändern


Schritt-für-Schritt-Anleitung

Um einen Drucker in Excel mit VBA auszuwählen und danach den Standarddrucker wiederherzustellen, kannst du das folgende Makro verwenden. Dieses Beispiel zeigt, wie du einen Drucker ändern und anschließend wieder den vorherigen Standarddrucker einstellen kannst.

Sub DruckeBereich()
    Dim strDruckerAktiv As String
    Dim sStdDrucker As String
    Dim i As Integer, max As Integer, vz As Integer, bz As Integer

    ' Standarddrucker sichern
    sStdDrucker = Application.ActivePrinter

    ' Drucker einstellen
    Application.ActivePrinter = "TEC B-SA4T (203 dpi) auf Ne02:"

    max = Sheets("Eingabe").Range("C6").Value
    If max > 40 Then max = 40
    For i = 1 To max
        vz = i * 2 - 1
        bz = i * 2
        Worksheets("Palettenaufkleber").Range("A" & vz & ":D" & bz).PrintOut Copies:=1
    Next i

    max = Sheets("Eingabe").Range("C8").Value
    If max > 500 Then max = 500
    For i = 1 To max
        vz = i * 2 - 1
        bz = i * 2
        Worksheets("PE-Aufkleber Einzel").Range("A" & vz & ":D" & bz).PrintOut Copies:=1
    Next i

    ' Standarddrucker wieder herstellen
    Application.ActivePrinter = sStdDrucker
End Sub

Dieses Makro stellt sicher, dass nach dem Drucken mit einem spezifischen Drucker der ursprüngliche Standarddrucker wieder aktiviert wird.


Häufige Fehler und Lösungen

  1. Fehler: "Drucker nicht gefunden"

    • Lösung: Überprüfe den Namen des Druckers in der Zeile Application.ActivePrinter = "TEC B-SA4T (203 dpi) auf Ne02:". Stelle sicher, dass der Drucker korrekt benannt ist.
  2. Fehler: Drucken funktioniert nicht

    • Lösung: Stelle sicher, dass die Arbeitsblätter "Palettenaufkleber" und "PE-Aufkleber Einzel" existieren. Überprüfe auch, ob die Range-Angaben korrekt sind.
  3. Fehler: Standarddrucker wird nicht wiederhergestellt

    • Lösung: Stelle sicher, dass die Variable sStdDrucker korrekt gesetzt ist, bevor der Drucker gewechselt wird.

Alternative Methoden

Eine alternative Methode, um den Drucker in Excel mit VBA auszuwählen, besteht darin, den aktuellen Drucker zu speichern, bevor du einen neuen Drucker einstellst. Hier ist ein Beispiel:

Sub DruckerWechseln()
    Dim savPrinter As String
    savPrinter = Application.ActivePrinter
    Application.ActivePrinter = "WinFax Pro 9.0"
    ' Druckvorgang hier durchführen
    Application.ActivePrinter = savPrinter
End Sub

Mit dieser Methode kannst du den Drucker einfach für temporäre Druckaufträge ändern.


Praktische Beispiele

Ein praktisches Beispiel für das Drucken von Palettenaufklebern und anderen Etiketten könnte wie folgt aussehen:

Sub DruckenBeispiel()
    ' Drucke 10 Palettenaufkleber
    For i = 1 To 10
        Worksheets("Palettenaufkleber").PrintOut
    Next i
End Sub

Du kannst das Beispiel anpassen, um unterschiedliche Drucker auszuwählen oder verschiedene Bereiche zu drucken.


Tipps für Profis

  • Verwende Application.Printer statt ActivePrinter, wenn du eine Liste aller verfügbaren Drucker abrufen möchtest.
  • Achte darauf, dass deine VBA-Variablen klar strukturiert sind. Verwende Typen wie As Integer oder As String, um die Lesbarkeit und Effizienz deines Codes zu verbessern.
  • Nutze die Möglichkeit, über den PrintOut-Befehl verschiedene Optionen, wie z.B. Copies:=2 für Mehrfachdrucke, zu konfigurieren.

FAQ: Häufige Fragen

1. Wie kann ich den Standarddrucker in Excel festlegen?
Du kannst den Standarddrucker in Excel festlegen, indem du den Drucker mit dem Befehl Application.ActivePrinter auswählst und sicherstellst, dass es der gewünschte Drucker ist.

2. Was mache ich, wenn mein Drucker nicht aufgelistet ist?
Überprüfe die Druckereinstellungen in Windows und stelle sicher, dass der Drucker korrekt installiert und angeschlossen ist. Starte Excel neu, um die Druckerliste zu aktualisieren.

3. Ist es möglich, mehrere Drucker in einem Makro zu verwenden?
Ja, du kannst mehrere Drucker innerhalb eines Makros verwenden, indem du die ActivePrinter-Eigenschaft mehrfach änderst und den gewünschten Drucker für jeden Druckvorgang auswählst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige