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

PDF erstellen: Datei bereits vorhanden

Forumthread: PDF erstellen: Datei bereits vorhanden

PDF erstellen: Datei bereits vorhanden
03.02.2016 20:10:37
Henner
Guten Abend zusammen
Mit folgendem Code exportiere ich eine 2-seitige PDF Datei, das funktioniert auch prima.

Sub PDF()
Dim strPfad As String
Dim strDateiName As String
Dim strSpeicher As String
strPfad = ActiveWorkbook.Path & "\"
strDateiName = Sheets("Auswertung").Range("A1")
strSpeicher = strPfad & strDateiName
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strSpeicher, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=2,  _
OpenAfterPublish:=True
End Sub

Wenn nun aber der Dateiname im Zielpfad bereits existiert bricht Excel den Export mit Fehlermeldung ab - soweit auch verständlich.
Frage:
Ist es möglich, die neu erzeugte Datei mit einer Erweiterung automatisch umzubenennen? So ist es bei anderen MS Anwendungen Standard, da die PDF Dateien automatisch erzeugt werden soll keine manuelle Änderung erforderlich sein.
Beispiele:
1. Datei "Auswertung.pdf" existiert noch nicht. Erzeuge: "Auswertung.pdf"
2. Datei "Auswertung.pdf" existiert bereits. Erzeuge: "Auswertung (1).pdf"
3. Datei "Auswertung (1).pdf" existiert bereits. Erzeuge "Auswertung (2).pdf"
Diese Logik soll sich fortsetzen
Ich hoffe ich konnte mein Anliegen deutlich ausdrücken. Bei Fragen bitte fragen.
Besten Dank & Gruss, Henner

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PDF erstellen: Datei bereits vorhanden
04.02.2016 07:59:51
fcs
Hallo Henner,
meines Wissens überschreibt der PDF-Export eine vorhandene Datei. Probleme gibt es, wenn die vorhandene Datei geöffnet ist.
Mit folgenden Ergänzungen wird eine automatische Nummerierung der erzeugten PDF erreicht.
Voraussetzung: Der Dateiname in Sheets("Auswertung").Range("A1") endet mit ".pdf".
Wenn nicht, dann müssen im Makro einpaar kleine Anpasungen gemacht werden, damit das einfügen der forlaufenden Nummer funktioniert.
Gruß
Franz
Sub PDF()
Dim strPfad As String
Dim strDateiName As String
Dim strSpeicher As String
Dim iCount As Integer
strPfad = ActiveWorkbook.Path & "\"
strDateiName = Sheets("Auswertung").Range("A1")
strSpeicher = strPfad & strDateiName
If Dir(strSpeicher)  "" Then
Do
iCount = iCount + 1
strSpeicher = strPfad & Replace(strDateiName, ".pdf", "(" & Format(iCount, "0") & ") _
.pdf")
Loop Until Dir(strSpeicher) = ""
End If
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strSpeicher, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=2, _
OpenAfterPublish:=True
End Sub

Anzeige
AW: PDF erstellen: Datei bereits vorhanden
04.02.2016 20:57:08
Henner
Guten Abend Franz,
besten Dank für Deinen Vorschlag. Ich werde die ganze Sache nochmal testen, insbesondere in Bezug auf die Problematik nur bei geöffneter bestehender Datei. Den Counter halte ich aber in jedem Fall für sinnvoll. Ich bin erst morgen wieder am Windows PC und werde mich nochmals melden.
Vielen Dank nochmal! Schönen Abend, Gruss Henner

Anzeige
-ERL- AW: PDF erstellen: Datei bereits vorhanden
06.02.2016 14:38:13
Henner
Hallo Franz,
ich konnte nun endlich testen. Du hasttest (natürlich) recht, es kommt nur zur Fehlermeldung wenn die bereits existierende Datei auch geöffnet ist. Wenn sie geschlossen ist wird sie gnadenlos ersetzt. Ich denke die Funktion mit dem Counter, die übrigens 1A funktioniert (DANKE!), ist für mich die beste.
Vielen vielen Dank nochmals! Schönes Wochenende, Gruss Henner

Anzeige
-ERL- AW: PDF erstellen: Datei bereits vorhanden
06.02.2016 17:28:41
Henner
Hallo nochmal,
ich habe den Code nun noch etwas für mich erweitert. Nun stehen dem "Exporteur" alle Möglichkeiten zur Verfügung:
- Normales Exportieren wenn noch keine Datei mit gleichem Namen vorhanden ist
- Ersetzen der bestehenden Datei inkl. Fehlerbehandlung wenn bestehende Datei geöffnet ist
- Hinzufügen einer neuen Version mit Erweiterung

Sub PDF()
If Dir(ActiveWorkbook.Path & "\" & ActiveSheet.Range("V1"))  "" Then
antwort = MsgBox("The file '" & ActiveSheet.Range("V1") & "' already exists." & vbCrLf & " _
Do you want to replace it?", vbYesNoCancel + vbQuestion, "Evaluation")
If antwort = vbCancel Then Exit Sub
On Error GoTo ErrRow
If antwort = vbYes Then Kill ActiveWorkbook.Path & "\" & ActiveSheet.Range("V1")
End If
Dim strPfad As String
Dim strDateiName As String
Dim strSpeicher As String
Dim iCount As Integer
strPfad = ActiveWorkbook.Path & "\"
strDateiName = ActiveSheet.Range("V1")
strSpeicher = strPfad & strDateiName
If Dir(strSpeicher)  "" Then
Do
iCount = iCount + 1
strSpeicher = strPfad & Replace(strDateiName, ".pdf", " (" & Format(iCount, "0") & " _
).pdf")
Loop Until Dir(strSpeicher) = ""
End If
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strSpeicher, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=2, OpenAfterPublish:=True
Exit Sub
ErrRow:         antwort = MsgBox("The existing file is opened and could not be replaced." &  _
vbCrLf & "Close the existing file and try again.", vbOKOnly + vbCritical, "Evaluation")
End Sub
Vielleicht kann es ja mal jemand brauchen. Gruss Henner
Anzeige
;
Anzeige

Infobox / Tutorial

PDF aus Excel erstellen und Dateiüberschreibungen vermeiden


Schritt-für-Schritt-Anleitung

Um eine PDF-Datei aus Excel zu erstellen und dabei zu vermeiden, dass bereits existierende Dateien überschrieben werden, kannst du den folgenden VBA-Code verwenden. Dieser sorgt dafür, dass eine neue Datei mit einer fortlaufenden Nummer erstellt wird, wenn der Dateiname bereits existiert.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub PDF()
    Dim strPfad As String
    Dim strDateiName As String
    Dim strSpeicher As String
    Dim iCount As Integer
    strPfad = ActiveWorkbook.Path & "\"
    strDateiName = Sheets("Auswertung").Range("A1").Value

    strSpeicher = strPfad & strDateiName
    If Dir(strSpeicher) <> "" Then
        Do
            iCount = iCount + 1
            strSpeicher = strPfad & Replace(strDateiName, ".pdf", " (" & Format(iCount, "0") & ").pdf")
        Loop Until Dir(strSpeicher) = ""
    End If

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strSpeicher, Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=2, _
    OpenAfterPublish:=True
End Sub
  1. Stelle sicher, dass in Zelle A1 der gewünschte Dateiname (mit der Endung .pdf) steht.
  2. Führe das Makro aus, um die PDF-Datei zu erstellen.

Häufige Fehler und Lösungen

  • Fehlermeldung: Datei existiert bereits.
    Wenn die Datei bereits geöffnet ist, bekommst du eine Fehlermeldung. Stelle sicher, dass die Datei geschlossen ist, bevor du das Makro ausführst.

  • PDF wird nicht erstellt.
    Überprüfe, ob der Dateiname in Zelle A1 korrekt eingegeben ist und die Endung .pdf hat.

  • Falscher Speicherort.
    Vergewissere dich, dass der Speicherort (Pfad) korrekt ist. Der Code speichert die PDF-Datei im gleichen Verzeichnis wie die Excel-Datei.


Alternative Methoden

Eine andere Möglichkeit, Excel-Dateien als PDF zu exportieren, ist die Verwendung des Excel-Menübandes:

  1. Wähle die Registerkarte „Datei“.
  2. Klicke auf „Speichern unter“.
  3. Wähle den Speicherort aus und wähle im Dropdown-Menü „Dateityp“ die Option „PDF“.
  4. Klicke auf „Speichern“.

Diese Methode eignet sich, wenn du keine VBA-Programmierung verwenden möchtest.


Praktische Beispiele

  • Beispiel 1: Datei „Auswertung.pdf“ existiert nicht.

    • Ergebnis: „Auswertung.pdf“ wird erstellt.
  • Beispiel 2: Datei „Auswertung.pdf“ existiert bereits.

    • Ergebnis: „Auswertung (1).pdf“ wird erstellt.
  • Beispiel 3: Datei „Auswertung (1).pdf“ existiert bereits.

    • Ergebnis: „Auswertung (2).pdf“ wird erstellt.

Diese Logik setzt sich fort, bis ein verfügbarer Dateiname gefunden wird.


Tipps für Profis

  • Fehlerbehandlung: Integriere eine Fehlerbehandlung, um sicherzustellen, dass das Makro nicht abstürzt, wenn eine Datei bereits geöffnet ist. Das kannst du mit der On Error-Anweisung erreichen.

  • Flexibilität: Passe den Code an, um zusätzliche Optionen für das Exportieren zu bieten, wie das Ersetzen einer existierenden Datei oder das Speichern in einem anderen Format.

  • Dokumentation: Kommentiere deinen Code, um zukünftigen Benutzern (oder dir selbst) das Verständnis des Codes zu erleichtern.


FAQ: Häufige Fragen

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

2. Was passiert, wenn ich die Datei umbenenne?
Wenn die Datei umbenannt wird, musst du sicherstellen, dass die Änderung im Code reflektiert wird, insbesondere in der Zeile, die den Dateinamen aus der Excel-Zelle liest.

3. Kann ich das Makro für andere Excel-Versionen nutzen?
Ja, das Makro sollte in den meisten aktuellen Excel-Versionen funktionieren, die VBA unterstützen.

Mit diesen Informationen bist du bestens gerüstet, um aus Excel PDF-Dateien zu erstellen, ohne bestehende Dateien zu überschreiben.

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