Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
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

Excel als PDF speichern / Pfad zu lang

Excel als PDF speichern / Pfad zu lang
10.10.2018 15:08:24
Christian
Hallo,
ich habe mir über den Makrorecorder den VBA Code für das Abspeichern der Seite als PDF erzeugt:

Dim strPathFile as String
Dim Path as String
Path = "[mein Netzwerkpfad]\"
strPathFile = Path & ThisWorkbook.Name
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=strPathFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

In der Regel hat dieser Code auch wunderbar funktioniert, aber teilweise kam Laufzeitfehler '5'.
Dieser Fehler wird scheinbar dann hervorgerufen, wenn meine String "strPathFile" 214 Zeichen überschreitet (durch Ausprobieren ermittelt).
In der Regel sind die Pfade zwischen 200-230 Zeichen lang, was durch einen verschachtelten Netzwerkpfad bedingt ist.
Die Datei lässt sich aber auf herkömmlichen Weg normal als PDF unter dem Pfad abspeichern.
Der Parameter "Filename" der "ExportAsFixedFormat" Methode ist laut Microsofthilfe "Variant".
Lässt sich hier durch eine Deklarierung oder ähnliches dieser Fehler umgehen?
Ansonsten werde ich wohl einen aufwändigen Workaround machen müssen.

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel als PDF speichern / Pfad zu lang
10.10.2018 19:56:21
onur
Poste mal die Datei oder zumindest den Pfad und den kompletten Code.
AW: Excel als PDF speichern / Pfad zu lang
11.10.2018 09:35:35
Christian
Hallo,
der Code kann mehr oder weniger auf das angegebene Beispiel runtergebrochen werden.
Da es sich um ein Netzwerkpfad meiner Firma handelt, ändere ich den Pfad aus Datenschutzgründen auf ein Beispiel ab. Das Verhalten des Makros wird dadurch nicht beeinflusst.
Sub save_pdf()
Dim strPathFile As String
Dim Path As String
Path = "C:\Unterordner 1\Unterordner 2\Unterordner 3\Unterordner 4\" _
& "Unterordner 5\Unterordner 6\Unterordner 7\Unterordner 8\" _
& "Unterordner 9\Unterordner 10\Worksheet PDF Archiv\" '
'= 164 Zeichen
'ThisWorkbook.Name = Microsoft Excel Worksheet Testdatei als PDF abspeichern.xlsx
'= 60 Zeichen
strPathFile = Path & ThisWorkbook.Name
'= 224 Zeichen
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=strPathFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
Bei diesem Code bekomme ich
"Laufzeitfehler '5' - Ungültiger Prozeduraufruf oder ungültiges Argument"

Sobald ich den Speicherpfad um einen Unterordner verkürze, funktioniert das Makro, da die Zeichenfolge unter 214 Zeichen fällt.
Anzeige
AW: Excel als PDF speichern / Pfad zu lang
11.10.2018 10:01:00
Christian
Häkchen für "offene Frage" vergessen :)
AW: Excel als PDF speichern / Pfad zu lang
11.10.2018 10:03:46
Robert
Hallo Christian,
das Problem mit dem zu langen Namen (einschl. Pfad) kannst Du umgehen, indem Du vor dem Speichern-Befehl in das entsprechende Verzeichnis wechselst und dann den Dateinamen ohne Pfadangabe eingibst. In Deinem Beispiel also so (Änderungen/Ergänzungen in rot):
Sub save_pdf()
Dim strPathFile As String
Dim Path As String, PathOld As String
Path = "C:\Unterordner 1\Unterordner 2\Unterordner 3\Unterordner 4\" _
& "Unterordner 5\Unterordner 6\Unterordner 7\Unterordner 8\" _
& "Unterordner 9\Unterordner 10\Worksheet PDF Archiv\" '
'= 164 Zeichen
'ThisWorkbook.Name = Microsoft Excel Worksheet Testdatei als PDF abspeichern.xlsx
'= 60 Zeichen
strPathFile = Path & ThisWorkbook.Name
'= 224 Zeichen
PathOld = CurDir
ChDir Left(Path, Len(Path) - 1)
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Name, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
ChDir PathOld
End Sub

Anzeige
AW: Excel als PDF speichern / Pfad zu lang
11.10.2018 10:14:39
Christian
Hallo Robert,
danke für deinen Lösungsvorschlag, aber ich bekomme immer noch den selben Fehler.
Kürze ich einen Unterordner weg, funktioniert auch deine Version.
Gruß Christian
AW: Excel als PDF speichern / Pfad zu lang
11.10.2018 17:50:29
onur

Sub save_pdf()
Dim strPathFile As String
Dim Path As String
Dim arr, i, OldPath
OldPath = CurDir
Path = "C:\Unterordner 1\Unterordner 2\Unterordner 3\Unterordner 4\" & "Unterordner 5\ _
Unterordner 6\Unterordner 7\Unterordner 8\" _
& "Unterordner 9\Unterordner 10\Worksheet PDF Archiv\" '
'= 164 Zeichen
arr = Split(Path, "\")
For i = 0 To UBound(arr) - 1
ChDir arr(i) + "\"
Next i
strPathFile = ThisWorkbook.Name
'= 224 Zeichen
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPathFile, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
ChDir OldPath
End Sub

Anzeige
AW: Excel als PDF speichern / Pfad zu lang
15.10.2018 08:38:20
Christian
Hallo onur,
deine Lösung funktioniert leider ebenfalls nicht für zu lange Pfadnamen.
Trotzdem Danke für deinen Vorschlag.
AW: Excel als PDF speichern / Pfad zu lang
15.10.2018 18:31:28
onur
Bei Windows 10 Pro kannst du die max. Pfadlänge unter Gruppenrichtlinien ändern (lassen).
AW: Excel als PDF speichern / Pfad zu lang
16.10.2018 09:37:00
Christian
Ich habe auf dem Arbeitsrechner leider nur Win7 ohne Adminrechte ;)
Hier kannst Du auf eine alte...
15.10.2018 09:59:17
Case
Hallo, :-)
... "Dos-Funktion" Namens "subst" zurückgreifen: ;-)
XCOPY - SHELL und ein paar Dinge mehr...
In der "Sub Main_2()" siehst Du wie das funktioniert. Du arbeitest dann mit einem virtuellen Laufwerk, welches Du am Ende mit "Sub Main_3()" wieder auflöst.
Servus
Case

Anzeige
Excel als PDF speichern / Pfad zu lang
15.10.2018 14:48:01
Anton
Hallo Christian,
vielleicht hilft dir das hier weiter.
mfg Anton
strPathFile = "b:\" & ThisWorkbook.Name & ".pdf"oT
15.10.2018 15:03:12
Anton
AW: strPathFile = "b:\" & ThisWorkbook.Name & ".pdf"oT
16.10.2018 10:32:20
Christian
Hallo Anton,
dein Vorschlag mit dem verbundenen Netzwerkpfad funktioniert!
Ich musste nur die Fehlermeldung deaktivieren, sonst bekomme ich immer die Meldung, dass die Netzwerkbezeichnung bereits existiert.
Scheinbar funktioniert das direkte Trennen nicht direkt.
Der Befehl zum Trennen funktioniert erst einige Sekunden später - bis dahin bekomme ich
"Laufzeitfehler '-2147022495 (80070961)' Automatisierungsfehler Es warten noch offene Dateien oder Anforderungen auf dieser Netzwerkverbindung"

Sub b()
Dim objNetzwerk As Object
Dim strServerpfad As String, strBenutzername As String, strPasswort As String
Set objNetzwerk = CreateObject("WScript.Network")
strServerpfad = "[...Netzwerkpfad...]"
'Netzwerk verbinden
On Error Resume Next
objNetzwerk.MapNetworkDrive "b:", strServerpfad ', , strBenutzername, strPasswort
'  If Err.Number Then
'    MsgBox Err.Description
'  Else
ChDrive ("b:\")
'MsgBox "Verbunden"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPathFile, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False,  _
OpenAfterPublish:=True
'  End If
ChDrive ("c:\") 'wichtig!sonst funktioniert das Trennen nicht!
'Netzwerk trennen
objNetzwerk.RemoveNetworkDrive "b:"
Set objNetzwerk = Nothing
End Sub

Anzeige
Wenn Du mit...
16.10.2018 12:59:29
Case
Hallo, :-)
..."Subst" arbeitest, kannst Du sofort trennen. ;-)
Servus
Case

AW: Wenn Du mit...
16.10.2018 13:07:40
Christian
Hallo Case/Ralf,
ich habe mir deinen Link auch angeschaut.
Deine Lösung ist wahrscheinlich noch sauberer, aber hier muss ich mich mit meinem Kenntnis Level erstmal einarbeiten. Ich probiere es auf alle Fälle noch aus.
Deine anderen Blogeinträge werden wahrscheinlich auch noch hilfreich werden in Zukunft ;)
Danke.
AW: strPathFile = "b:\" & ThisWorkbook.Name & ".pdf"oT
16.10.2018 17:23:37
Anton
Hallo Christian,
vielleicht reicht es schon OpenAfterPublish:=True auf False zu setzen.
mfg Anton
Anzeige
AW: Excel als PDF speichern / Pfad zu lang
16.10.2018 09:38:09
Christian
Hallo Anton,
dein Beitrag sieht vielversprechend aus!
Ich werde versuchen dass umzusetzen.
Danke

332 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige