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

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Q

Forumthread: ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Q

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Q
17.05.2013 19:45:29
Eddie
Hallo,
ich habe ein großes Problem mit der Ausgabe von pdf.
Ein WKS wird mit folgendem Aufruf in ein pdf ausgegeben:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=..., Quality:=xlQualityStandard,  _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Soweit läuft das einwandfrei. Wenn aber jetzt jemand anders das pdf zur Ansicht öffnet, kann ich das Dokument nicht mehr überschreiben:
Run-time error '1004' Document not saved. The Document may be open ...
Das ist insofern überraschend, derjenige auf das Verzeichnis nur Leserechte hat. Selbst wenn ich bei der Datei das readonly Attribut setze, ändert es daran nichts.
Bei XPS ist das gleiche Problem. Bei Ausgabe als Excel Worksheet würde es gehen, das kommt aber aus anderen Gründen nicht in Frage.
Gibt es irgendeinen Weg zu verhindern, dass mir jemand, der sowieso nur Leserechte hat, mir die Berechtigung zum Schreiben wegnehmen kann?
Ich suche nach einer anderen Lösung, außer den Dateinamen, in eine höhere Version zu ändern.
Gruß Eddie

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Q
17.05.2013 23:58:47
Matze
Hi Eddie,
ich bin jetzt nicht der Fachmann dafür, aber ich denke mir mal solange die PDF geöffnet ist wirst du die "nicht" exportieren können.
Fragen: 1 was passiert denn wenn diese geschlossen ist?
2 exportierst du diese unter dem selben Namen?
hier ein gegooglter Link zum selben Thema (english)
http://www.mrexcel.com/forum/excel-questions/619135-run-time-error-1004-document-not-saved-when-exporting-pdf-visual-basic-applications.html
Matze

Anzeige
AW: ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Q
18.05.2013 00:39:09
Eddie
Hallo Matze,
aber ich denke mir mal solange die PDF geöffnet ist wirst du die "nicht" exportieren können.

Warum geht das aber mit einer Excel Datei und mit einem PDF nicht?
1) Wenn das Dokument geschlossen ist, kann ich wieder exportieren. Ich will aber denjenigen nicht jedes mal vorher suchen.
2) Ja, es soll derselbe Name (Datei) sein
Den link hatte ich auch gefunden. Die Meldung ist die gleiche, jedoch scheinen die nachfolgenden postings eine andere Problemstellung zu behandeln. Zumindest sehe ich dort keine Lösung.
Ich habe so ganz leise das Gefühl, das Problem entsteht, weil man seit einer Weile pdf's auch mit Kommentaren und Markierungen versehen kann, also will der Reader im R/W Modus öffnen. Jedoch müsste er doch merken, dass das Dokument Schreibgeschützt ist?!
Gruß Eddie

Anzeige
AW: ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Q
18.05.2013 09:03:46
mumpel
Hallo!
Eine Exceldatei ist nun mal keine PDF-Datei. In Excel funktioniert vieles anders.
Excel bzw. "ExportAsFixedFormat" kann nicht erkennen ob eine PDF-Datei schreibgeschützt geöffnet ist. Du musst Dich damit abfinden dass eine geöffnete PDF-Datei nicht ersetzt werden kann. Ist bei Winzip ja auch nicht anders. Du kannst eine geöffnete Excel-Datei nicht mit Winzip packen, solange die Datei geöffnet ist, also ein anderes Programm auf die Datei zugreift.
Gruß, René

Anzeige
AW: ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Q
18.05.2013 11:07:15
Eddie
Hallo,
danke Euch
Ich habe es mir schon gedacht, aber da es schade ist, wollte ich mich Rückversichern.
Gruß Eddie

AW: ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Q
19.05.2013 13:57:23
Eddie
Hallo,
auch wenn kaum Hoffnung besteht, habe ich mich entschlossen, das Häkchen für Frage offen erneut zu setzen. Vielleicht fällt doch noch jemand was ein.
Gruß Eddie

Anzeige
AW: ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Q
21.05.2013 09:46:08
fcs
Hallo Eddie,
die geöffnete PDF-Datei zu überschreiben wird nicht funktionieren. Das wird durch das Betriebssystem bzw. den Netztwerkserver verhindert.
Man kann aber den Fehler abfangen und versuchen einen alternativen Weg zu gehen.
Der alternative Weg hängt etwas davon ab, wie schnell die aktualisierte Version der PDF-Dtaei den anderen Anwendern zur Verfügung stehen muss.
Grundsätzlich wird die PDF-Datei in einem anderen Verzeichnis temporär gespeichert, wenn die Originaldatei geöffnet ist.
Alternative A:
Wenn die Aktualisierung nicht so eilt, dann werden mit einem zeitgesteuerten VB-Script oder einer BATCH-Datei Nachts die Dateien aus dem temporären in das Originalverzeichnis kopiert. Das solltest du dann mit dem Netzwerks-Admin abstimmen.
Beispielmakro:
Sub MakePDFFile()
Dim strPDF_Name As String, strPath As String, PathOriginal As String, PathTemp As String
PathOriginal = "C:\Users\Public\Test" 'ggf. anpassen
PathTemp = "C:\Users\Public\Test\Temp" 'ggf. anpassen
On Error GoTo Fehler
strPDF_Name = "TestPDF.pdf"
If fncMakePDF(strPDF_FileName:=PathOriginal & "\" & strPDF_Name) = False Then
'PDF-Datei ist zur Zeit geöffnet
'Prüfen, ob das temporär Verzeichnis existiert
If Dir(PathTemp, vbDirectory) = "" Then
VBA.MkDir Path:=PathTemp
End If
'ggf. vorhandene Datei gleichen Namens löschen
If Dir(PathTemp & "\" & strPDF_Name)  "" Then Kill PathTemp & "\" & strPDF_Name
'PDF in Temporär erstellen
If fncMakePDF(strPDF_FileName:=PathTemp & "\" & strPDF_Name) = True Then
MsgBox "PDF-Datei ist zur Zeit geöffnet." & vbLf _
& "PDF-Datei wurde in temporärem Verzeichnis erstellt.", _
vbInformation + vbOKOnly, "PDF-Datei aktives Blatt erstellen"
Else
MsgBox "PDF-Datei ist zur Zeit geöffnet." & vbLf _
& "Fehler beim Erstellen der PDF-Datei.", _
vbInformation + vbOKOnly, "PDF-Datei aktives Blatt erstellen"
End If
End If
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & .Description
End Select
End With
End Sub
Function fncMakePDF(strPDF_FileName As String) As Boolean
'PDF-Datei des aktiven Blattes erstellen
On Error GoTo Fehler
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPDF_FileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
fncMakePDF = True
Case Else
'        MsgBox "Fehler-Nr.: " & .Number & .Description, vbInformation, _
"Fehler beim erstellen der PDF-Datei"
fncMakePDF = False
End Select
End With
End Function
Alternative B:
Wenn die PDF-Datei so schnell wie möglich ins Originalverzeichniskopiert werden soll, dann kann man in Excel zeitgesteuert ein entsprechendes Kopiermakro starten, ggf. mit regelmäßiger Wiederholung.
Beispieldatei: https://www.herber.de/bbs/user/85422.xlsm
Gruß
Franz
Anzeige
;
Anzeige

Infobox / Tutorial

ActiveSheet.ExportAsFixedFormat für PDF in Excel nutzen


Schritt-für-Schritt-Anleitung

Um ein Excel-Arbeitsblatt als PDF zu exportieren, kannst du die ActiveSheet.ExportAsFixedFormat-Methode verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Insert" > "Module" auswählst.

  3. Füge den folgenden Code ein:

    Sub ExportSheetAsPDF()
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:="C:\DeinPfad\DeineDatei.pdf", _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=False
    End Sub
  4. Ändere den Filename-Pfad entsprechend deiner gewünschten Speicherorte.

  5. Schließe den VBA-Editor und führe das Makro aus, um das Arbeitsblatt als PDF zu exportieren.


Häufige Fehler und Lösungen

Einer der häufigsten Fehler beim Exportieren als PDF ist der "Run-time error 1004: Document not saved". Hier sind einige Lösungen:

  • Fehlerursache: Wenn die PDF-Datei bereits geöffnet ist, kannst du sie nicht überschreiben. Stelle sicher, dass die Datei geschlossen ist, bevor du versuchst, sie zu exportieren.
  • Lösung: Verwende ein temporäres Verzeichnis, um die PDF-Datei zu speichern, wenn sie derzeit geöffnet ist. Du kannst den Code anpassen, um die PDF-Datei vorübergehend zu speichern und später zu verschieben.

Alternative Methoden

Falls du die activesheet.exportasfixedformat-Methode nicht verwenden kannst oder möchtest, gibt es einige Alternativen:

  • Batch-Skripte: Erstelle ein zeitgesteuertes Skript, das nachts die PDFs von einem temporären Verzeichnis in das endgültige Verzeichnis kopiert.
  • Makros für wiederholte Aufgaben: Setze ein Makro auf, das regelmäßig die Dateien in das Originalverzeichnis kopiert, wenn die Datei nicht mehr geöffnet ist.

Hier ist ein Beispiel, wie du die PDF-Datei in ein temporäres Verzeichnis speichern kannst:

Sub MakePDFFile()
    Dim strPDF_Name As String
    strPDF_Name = "TestPDF.pdf"
    ' Logik zum Erstellen der PDF-Datei hier
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, um das ExportAsFixedFormat zu nutzen:

  1. Export mit spezifischen Einstellungen:

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:="C:\Beispiel\MeinDokument.pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False
  2. Export und nach dem Erstellen öffnen:

    Wenn du möchtest, dass die PDF-Datei nach dem Erstellen automatisch geöffnet wird:

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Beispiel\MeinDokument.pdf", _
        OpenAfterPublish:=True

Tipps für Profis

  • Debugging: Wenn activesheet.exportasfixedformat not working ist, füge On Error Resume Next vor dem Export-Befehl hinzu, um Fehler abzufangen und besser zu debuggen.
  • Benutzerfreundlichkeit: Informiere die Benutzer, wenn die PDF-Datei nicht überschrieben werden kann, um Missverständnisse zu vermeiden.
  • Dynamische Dateinamen: Verwende Zeitstempel oder eindeutige IDs in den Dateinamen, um Konflikte zu vermeiden:

    Dim Dateiname As String
    Dateiname = "Dokument_" & Format(Now, "yyyymmdd_hhnnss") & ".pdf"

FAQ: Häufige Fragen

1. Was passiert, wenn die PDF-Datei geöffnet ist? Wenn die PDF-Datei geöffnet ist, kann sie nicht überschrieben werden. Du musst sicherstellen, dass die Datei geschlossen ist, um den Export durchzuführen.

2. Kann ich die PDF-Datei in ein temporäres Verzeichnis speichern? Ja, du kannst die PDF-Datei in ein temporäres Verzeichnis speichern und später in das Originalverzeichnis kopieren, wenn die Datei nicht mehr geöffnet ist.

3. Wie kann ich den Fehler "Run-time error 1004" vermeiden? Um diesen Fehler zu vermeiden, stelle sicher, dass die PDF-Datei nicht geöffnet ist, bevor du versuchst, sie zu überschreiben. Eine Alternative ist, die Datei in ein temporäres Verzeichnis zu exportieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige