Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: per VBA drucken - Dateiname

per VBA drucken - Dateiname
scheichuwe
Hallo zusammen,
ich habe hier eine Tabelle, in der wöchentlich ein Bereitschaftsplan erstellt wird. Dieser wird dann hiermit
Sub PrintToPDF()
Dim pdfjob As Object
Dim sPDFName As String
Dim sPDFPath As String
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
sPDFPath = "D:\Ruf"
If pdfjob.cStart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + _
vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
With pdfjob
sPDFName = "Ruf" & Range("D169").Text & "-" & Range("F169").Text & ".pdf"
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0
.cClearCache
End With
ActiveWorkbook.PrintOut Copies:=1, Collate:=True, ActivePrinter:="Erstelle PDF  _
auf Ne04:"
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
pdfjob.cClose
Set pdfjob = Nothing
End Sub
automatisch als pdf ausgedruckt. Das funktioniert soweit auch hervorragend. Der Dateiname wird automatisch vergeben (Datum des Beginns und Ende). Folgendes Problem:
Wenn ich jetzt eine Zeile einfüge, verschieben sich die Zellen, aus denen der Dateiname erstellt wird. Als Dateiname bekomme ich dementsprechend - nix :-)
Hab schon probiert in der Zeile
sPDFName = "Ruf" & Range("D169").Text & "-" & Range("F169").Text & ".pdf"

mit Cells statt Range zu arbeiten, ich kriegs trotzdem nicht hin.
Wer weiß Rat?
Danke schonmal
Uwe
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: per VBA drucken - Dateiname
31.03.2010 10:53:33
Oberschlumpf
Hi Uwe
Wenn in den Zellen
Range("D169").Text = Dateiname
Range("F169").Text = Datum von Beginn und Ende
steht,
dann gib mal den Zellen Bereichsnamen.
Da solltest du dann so viele neue Zeilen hinzufügen können, wie du willst.
Die Zelle, die zum jeweiligen Bereichsnamen gehört, sollte nun automatisch angepasst werden.
Hilfts?
Ciao
Thorsten
Anzeige
gib den Zellen einen Namen
31.03.2010 10:54:06
Rudi
Hallo,
z.B. Beginn und Ende.
sPDFName = "Ruf" & Range("Beginn").Text & "-" & Range("Ende").Text & ".pdf"
Gruß
Rudi
AW: per VBA drucken - Dateiname
31.03.2010 11:07:42
scheichuwe
Manchmal kann es so einfach sein.
Vielen Dank euch beiden. Klappt.
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Erstellen von PDF-Dateien mit VBA und dynamischem Dateinamen


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro zu erstellen, das einen Bereitschaftsplan als PDF mit einem dynamischen Dateinamen druckt, folge diesen Schritten:

  1. Öffne die Excel-Datei mit deinem Bereitschaftsplan.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Rechtsklick im Projektfenster > Einfügen > Modul.

  4. Kopiere und füge den folgenden Code ein:

    Sub PrintToPDF()
       Dim pdfjob As Object
       Dim sPDFName As String
       Dim sPDFPath As String
       Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
       sPDFPath = "D:\Ruf"
    
       If pdfjob.cStart("/NoProcessingAtStartup") = False Then
           MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
           Exit Sub
       End If
    
       With pdfjob
           sPDFName = "Ruf" & Range("Beginn").Text & "-" & Range("Ende").Text & ".pdf"
           .cOption("UseAutosave") = 1
           .cOption("UseAutosaveDirectory") = 1
           .cOption("AutosaveDirectory") = sPDFPath
           .cOption("AutosaveFilename") = sPDFName
           .cOption("AutosaveFormat") = 0
           .cClearCache
       End With
    
       ActiveWorkbook.PrintOut Copies:=1, Collate:=True, ActivePrinter:="Erstelle PDF auf Ne04:"
    
       Do Until pdfjob.cCountOfPrintjobs = 1
           DoEvents
       Loop
    
       pdfjob.cPrinterStop = False
    
       Do Until pdfjob.cCountOfPrintjobs = 0
           DoEvents
       Loop
    
       pdfjob.cClose
       Set pdfjob = Nothing
    End Sub
  5. Benutze benannte Bereiche für die Zellen, die den Dateinamen beeinflussen (z. B. "Beginn" und "Ende").

  6. Führe das Makro aus, um die PDF-Datei zu erstellen.


Häufige Fehler und Lösungen

  • Problem: Der Dateiname ist leer oder falsch.

    • Lösung: Stelle sicher, dass die Zellen, die für den Dateinamen verwendet werden, korrekt benannt sind und die Daten enthalten.
  • Problem: PDFCreator kann nicht gestartet werden.

    • Lösung: Überprüfe, ob PDFCreator installiert ist und keine anderen Prozesse das Programm blockieren.

Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch die Excel-Funktion „Speichern unter“ verwenden, um dein Arbeitsblatt als PDF zu speichern. Gehe dazu auf „Datei“ > „Speichern unter“ und wähle PDF als Dateiformat. Allerdings ist diese Methode nicht automatisiert und erfordert manuelle Eingaben.


Praktische Beispiele

Hier ist ein praktisches Beispiel für das Erstellen eines Bereitschaftsplans:

  • Bereichsnamen festlegen: Definiere die Zellen, die für den Dateinamen verwendet werden sollen, als "Beginn" und "Ende".
  • VBA anpassen: Ändere im VBA-Code die Zeilen Range("Beginn") und Range("Ende") je nach deinen Zellen.

Damit kannst du den Dateinamen dynamisch anpassen, auch wenn du Zeilen hinzufügst oder löschst.


Tipps für Profis

  • Verwende Benannte Bereiche: Dadurch wird der Code robuster. Wenn sich die Zellen verschieben, bleibt der Name gleich.
  • Automatisiere den Druckprozess: Du kannst auch zusätzliche Optionen in PDFCreator anpassen, um den Druckprozess zu optimieren.
  • Teste verschiedene Dateipfade: Probiere verschiedene Speicherorte aus, um eine schnelle Zugriffsmöglichkeit zu gewährleisten.

FAQ: Häufige Fragen

1. Wie kann ich den Dateipfad für die PDF-Datei ändern? Du kannst sPDFPath im VBA-Code anpassen, um einen anderen Speicherort für die PDF-Datei festzulegen.

2. Was mache ich, wenn ich mehrere PDFs auf einmal drucken möchte? Du kannst eine Schleife im VBA-Code einfügen, um mehrere Arbeitsblätter nacheinander zu drucken und jeweils unterschiedliche Dateinamen zu vergeben.

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