Clever-Excel-Forum

Normale Version: Excel VBA PDF Export auf OneDrive
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich habe eine Excel Datei wo ich mit VBA raus gerne ein PDF auf meinem OneDrive wo auch die Exceldatei liegt speichern, allerdings bekomme ich dann immer die Fehlermeldung "Laufzeitfehler 1004 Das Dokument wurde nicht gespeichert. Das Dokument ist möglicherweise geöffnet, oder beim Speichern ist ein Fehler aufgetreten."

Den Speicher String habe ich so zusammengesetzt, 
Code:
strPfad = ThisWorkbook.Path & "/Berichte/listen/" & "liste-" & Month(Date) & "-" & Now & ".pdf"

Das PDF soll dann so generiert werden
Code:
wksTemp.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPfad, IncludeDocProperties:=True, OpenAfterPublish:=True

Wenn ich den Part "Filename" rausnehme, dann wird das PDF auch korrekt geöffnet und angezeigt, nur das Speichern auf dem OneDrive klappt wohl nicht. Schreibrechte habe ich grundsätzlich auf das OneDrive...

Was kann da falsch laufen, bzw. was müsste ich tun?

Danke
Hallöchen,

1)
schaue mal, was ThisWorkbbok.Path enthält
2)
Zeichne mal das Speichern als pdf auf

siehst Du den Unterschied? Du musst den Pfad aus 2) nehmen.
Hi,
was meinst du mit Aufzeichnen? Mit dem Makro Rekorder? Dann erstellt er mir nur ein leeres Modul ohne Inhalt wenn ich das Tabellenblatt über als "Als Adobe PDF speichern" wähle.

Zitat:1)
schaue mal, was ThisWorkbbok.Path enthält
Das hatte ich schon gemacht und der Pfad sieht anders aus wie erwartet, allerdings nutze ich den gleichen Pfad um das Arbeitsblatt als neue Arbeitsmappe zu speichern und das klappt ohne Probleme, nur beim PDF nicht...

Die Excelmappe wird so gespeichert und das funktioniert
Code:
'Das Arbeitsblatt wird in die Zwischenablage kopiert und als neue Arbeitsmappe mit der korrekten Bezeichnung als Excel Datei gespeichert
.Copy
    With ActiveWorkbook
    .SaveAs ThisWorkbook.Path & "/Berichte/listen/" & "liste-" & Month(Date) & "-" & Now & ".xlsx"
    .Close
    End With
[size=large][/size]
Und die PDF so und da klappt es nicht

Code:
Dim strPfad
strPfad = ThisWorkbook.Path & "/Berichte/listen/" & "listen-" & Month(Date) & "-" & Now & ".pdf"
'Das Arbeitsblatt wird als PDF Exportiert
wksTemp.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPfad, IncludeDocProperties:=True, OpenAfterPublish:=True

EDIT:

Hab jetzt nochmal was probiert und das Problem glaub ich jetzt gefunden, "Now" macht die Probleme, wenn ich das durch "Date" ersetze, dann klappt es wie es soll.....

Wenn ich "Now" formatiere, dann klappt das speichern auch
Code:
Format(Now, "dd.mm.yyyy hh mm")
Moin!
(09.02.2023, 05:14)Mila schrieb: [ -> ]Das hatte ich schon gemacht und der Pfad sieht anders aus wie erwartet, …
Richtig!
ThisWorkbook.Path ergibt so etwas:
https://d.docs.live.net/a57c84517c01/Test

Kopierst Du den Pfad aus dem Explorer, erhältst Du den "Spiegelpfad":
C:\Users\Nutzername\OneDrive\Test

Mit VBA ermittelst Du ihn so:
Environ("Onedrive")
ergibt
C:\Users\Nutzername\OneDrive

Kannst Du damit etwas anfangen?

Gruß Ralf

Sehe jetzt Dein EDIT
Now() liefert in Deutschland den für einen Dateinamen ungültigen Doppelpunkt als Uhrzeittrenner.
Hi,
super Danke für die Info, wie gesagt, das Problem lag aber nicht am Pfad, sondern am "Now" ich hab den Pfad unverändert gelassen auf " ThisWorkbook.Path" und nur das Now formatiert und dann klappt es wie es soll.
Hallöchen,

noch ein kleiner Hinweis. Mal unabhängig davon, wie die Trennzeichen von Datum oder Zeit aussehen, gibt es in WINDOWS und UNIX "verbotene" Zeichen für Pfade und Dateinamen, wobei UNIX da etwas überschaubarer ist Smile . Hier mal für die druckbaren Zeichen:


Windows
<>:"/\|?*

UNIX
/