Live-Forum - Die aktuellen Beiträge
Datum
Titel
07.05.2024 16:36:49
07.05.2024 14:51:38
07.05.2024 13:27:17
Anzeige
Archiv - Navigation
1924to1928
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Drucken per VBA

Drucken per VBA
11.04.2023 14:21:05
David

Hallo zusammen,

folgender Code funktioniert im Prinzip und tut, was er soll:

Private Sub drucken_Click()

    NameTemplateHelp = "Vorschlag für Dateiname (mit STRG-C in die Zwischenablage kopieren und im nächsten Dialogfeld als Dateiname mit STRG-V einfügen)"
        
    Auswahl = Selection.Row
    
    If Selection.Count > 1 Then
        MsgBox "Bitte nur einen Belege markieren!"
    ElseIf Selection.Column > 1 Then
        MsgBox "Bitte nur auf Belegnummer (Doppel)klicken!"
    ElseIf Cells(Auswahl, Selection.Column) = "" Then
        MsgBox "Gewählte Zelle ist leer!"
    ElseIf Auswahl  4 Then
        MsgBox "Gewählte Zeile gehört zur Überschrift!"
    ElseIf Liste.Range("A" & Auswahl) = 9999 Then
        MsgBox "Beleg Nr. 9999 kann nicht gedruckt werden (das ist ein Platzhalter bzw. Beispiel)"
    ElseIf Liste.Range("A" & Auswahl) = 0 Then
        MsgBox "ein Beleg mit der Nummer 0 kann nicht gedruckt werden"
    Else
        
        PrintMsg = Liste.Range("A" & Auswahl)
        
        Bankbeleg.Range("C6") = Liste.Range("A" & Auswahl)
        NameTemplate = "BB " & Format(Liste.Range("A" & Auswahl), "000 ") & Liste.Range("B" & Auswahl)
        
        Abbruch = MsgBox("Es wird Beleg " & PrintMsg & " gedruckt!", vbOKCancel)
        
        If Abbruch = vbOK Then
            Dummy = InputBox(NameTemplateHelp, "Kopiervorlage", NameTemplate)
            
            Application.DisplayAlerts = False
            
            Bankbeleg.PrintOut Copies:=1, ActivePrinter:="Foxit PhantomPDF Printer", PrintToFile:=True, PrToFileName:="C:\Temp\test.pdf"
        
            Liste.Activate
            Application.DisplayAlerts = True
    
        End If
    End If
    
    Liste.Range(Selection.Address).Select
    
End Sub


Meine Frage betrifft folgende Zeile:

Bankbeleg.PrintOut Copies:=1, ActivePrinter:="Foxit PhantomPDF Printer", PrintToFile:=True, PrToFileName:="C:\Temp\test.pdf"


Wie kann/muss ich das umschreiben (wenn es denn überhaupt geht), dass hier nicht der auf meinem Rechner installierte Drucker verwendet wird, sondern dass das bei jedem mit dem Standard-Windows-Drucker funktioniert?

Eine Zusatzfrage wäre noch: wenn ich die Pfad- und Namensangabe "... test.pdf" weglasse, funktioniert es nicht, MIT der Angabe kommt einfach nur der Dialog des Druckertreibers. Ließe sich das so "gestalten", dass hier gleich in die entsprechende pdf gedruckt wird oder ist das vom Treiber abhängig oder hab ich hier einen generellen Denk-Fehler? Die Beantwortung hierzu wäre aber eher zweitrangig, solange der Rest funktioniert.

Danke und Gruß
David

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Drucken per VBA
11.04.2023 14:28:12
Phio
Moin!
1. Zum Drucker:
Um den Standard-Windows-Drucker zu verwenden, können Sie den Parameter "ActivePrinter" einfach leer lassen. Dadurch wird der Standard-Drucker automatisch ausgewählt. Die entsprechende Zeile würde dann so aussehen:
Bankbeleg.PrintOut Copies:=1, PrintToFile:=True, PrToFileName:="C:\Temp\test.pdf"
2. Zur Zusatzfrage:
Ohne die Angabe einer Datei und eines Pfads wird der Druckerdialog automatisch geöffnet, um den Speicherort und den Dateinamen auszuwählen. Wenn Sie jedoch die Option "PrintToFile" auf "True" setzen und gleichzeitig eine gültige Datei- und Pfadangabe im Parameter "PrToFileName" machen, wird die Ausgabe direkt in die angegebene PDF-Datei gedruckt, ohne dass der Druckerdialog geöffnet wird. Beachten Sie jedoch, dass dies von Ihrem PDF-Druckertreiber abhängen kann, ob er dies unterstützt oder nicht.


Anzeige
AW: Drucken per VBA
11.04.2023 14:31:27
David
Hallo Phio,

danke, das hat funktioniert. Manchmal kann es so einfach sein.
Ich habe schon vermutet, dass das mit dem Foxit-Treiber nicht direkt geht. Ich meine mich zu erinnern, es am Anfang mit dem Windows-pdf-Treiber versucht zu haben, da kam auch ein Dialog. Ist jetzt aber auch kein Problem, wer den pdf-Drucker als Standard hat, sollte das ja wissen.

Gruß
David

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige