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

Forumthread: Ordner anlegen und als PDF speichern

Ordner anlegen und als PDF speichern
27.04.2016 09:02:11
Rookie
Hallo liebe VBA Profis,
ich habe folgendes Problem und bräuchte eure Hilfe:
Ich möchte mehrere Tabellenblätter als PDF in einem Ordner speichern. Zuerst soll aber geprüft werden ob der Ordner bereits vorhanden ist, falls nicht soll dieser Angelegt werden und anschließend das PDF in diesem Ordner gespeichert werden.
Der Pfad zu diesem Ordner sowie der Dateiname des PDF sollen sich aus einer festen Vorgabe und verschiedenen Zelleninhalten der aktiven Tabelle generieren.
Leider funktioniert es bei mir nicht. Es kommt die Meldung „Fehler beim Zugriff auf Pfad/Datei“.
Vielleicht kann mir einer von euch weiterhelfen.
Vielen herzlichen Dank im voraus!
Option Explicit
Sub PrüfenAnlegenPDFspeichern()
Dim Pfad As String
Dim Name As String
Dim Datei As String
Dim Endpfad As String
Pfad = "R:\kst128000\individual\Audits\" & Name 'Grundpfad
With ActiveSheet
Name = .Cells(3, 8).Value & "\" & .Cells(7, 18).Value & "\" & .Cells(4, 8).Value & " " & _
.Cells(6, 8).Value 'Namen der Unterordner
Datei = "\" & .Cells(7, 23).Value & "_" & .Cells(5, 8).Value & ".pdf" ' Dateiname PDF
End With
If Dir(Pfad, vbDirectory) = Name Then
MsgBox "Das Verzeichnis existiert bereits!"
Else
MkDir Pfad
MsgBox "Verzeichnis erstellt."
End If
Endpfad = Pfad & Name & Datei
MsgBox "Verzeichnis " & Endpfad
Sheets(Array("Deckblatt Q-Fähigk ", "Proz-BalkenMatrix", "Bewertungsmatrix", _
"QTP dt.", "Maßnahmenplan")).Select
Sheets("Maßnahmenplan").Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Endpfad, Quality _
:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Ordner anlegen und als PDF speichern
27.04.2016 09:57:16
ChrisL
Hi
Pfad = "R:\kst128000\individual\Audits\" & Name
Zu dem Zeitpunkt ist die Variable Name noch gar nicht definiert.
(n.b. den Begriff "Name" würde ich nicht verwenden, da er a) nichts aussagt und b) auch für VBA verwendet wird z.B. Sheet.Name)
Wenn der Pfad auch den Namen enthält, dann wäre hier wieder etwas falsch:
Endpfad = Pfad & Name & Datei
d.h. der Name wäre doppelt.
cu
Chris

Anzeige
AW: Ordner anlegen und als PDF speichern
27.04.2016 10:51:10
Rookie
Hallo Chris,
vielen Dank für deine Hinweise! Hab ich auch gleich umgesetzt, aber leider funktioniert es immer noch nicht. Stimmt hier vielleicht mit dem MkDir-Befehl etwas nicht?
Sub PrüfenAnlegenPDFspeichern()
Dim Pfad As String
Dim Ordner As String
Dim Datei As String
Dim Endpfad As String
With ActiveSheet
Ordner = .Cells(3, 8).Value & "\" & .Cells(7, 18).Value & "\" & .Cells(4, 8).Value & _
" " & .Cells(6, 8).Value 'Namen der Unterordner
Datei = "\" & .Cells(7, 23).Value & "_" & .Cells(5, 8).Value & ".pdf" ' Dateiname  _
PDF
End With
Pfad = "R:\kst128000\individual\Audits\" & Ordner 'Grundpfad
If Dir(Pfad, vbDirectory) = Ordner Then
MsgBox "Das Verzeichnis existiert bereits!"
Else
MkDir Pfad
MsgBox "Verzeichnis erstellt."
End If
Endpfad = Pfad & Datei
MsgBox "Verzeichnis " & Endpfad
Sheets(Array("Deckblatt Q-Fähigk ", "Proz-BalkenMatrix", "Bewertungsmatrix", _
"QTP dt.", "Maßnahmenplan")).Select
Sheets("Maßnahmenplan").Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Endpfad, Quality _
:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub

Anzeige
AW: Ordner anlegen und als PDF speichern
27.04.2016 11:18:57
ChrisL
Hi
Ja das stimmt, MkDir macht nur ein Verzeichnis auf einmal.

Sub PrüfenAnlegenPDFspeichern()
Dim Pfad As String
Dim Ordner As String
Dim Datei As String
Dim Endpfad As String
With ActiveSheet
Ordner = .Cells(3, 8).Value & "\" & .Cells(7, 18).Value & "\" & .Cells(4, 8).Value & " " & . _
Cells(6, 8).Value 'Namen der Unterordner
Datei = "\" & .Cells(7, 23).Value & "_" & .Cells(5, 8).Value & ".pdf" ' Dateiname PDF
End With
Pfad = "R:\kst128000\individual\Audits\" & Ordner 'Grundpfad
If Dir(Pfad, vbDirectory) = Ordner Then
MsgBox "Das Verzeichnis existiert bereits!"
Else
Call MakeDir(Pfad)
MsgBox "Verzeichnis erstellt."
End If
Endpfad = Pfad & Datei
MsgBox "Verzeichnis " & Endpfad
'Sheets(Array("Deckblatt Q-Fähigk ", "Proz-BalkenMatrix", "Bewertungsmatrix", _
'"QTP dt.", "Maßnahmenplan")).Select
'Sheets("Maßnahmenplan").Activate
'ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
'Endpfad, Quality _
':=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
'OpenAfterPublish:=True
End Sub

Private Function MakeDir(FolderName As String)
Dim S As Variant, I As Long, F As String
S = Split(FolderName, "\")
For I = LBound(S) To UBound(S)
If S(I)  "" Then
F = F & S(I) & "\"
On Error Resume Next
MkDir F
On Error GoTo 0
End If
Next I
End Function

Quelle: https://dbwiki.net/wiki/VBA_Tipp:_Verzeichnis_mit_Unterverzeichnissen_anlegen
cu
Chris

Anzeige
AW: Ordner anlegen und als PDF speichern
28.04.2016 12:21:14
Rookie
Vielen Dank! Funzt!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Ordner anlegen und als PDF speichern


Schritt-für-Schritt-Anleitung

Um mehrere Tabellenblätter als PDF in einem Ordner zu speichern und sicherzustellen, dass der Ordner existiert, kannst Du den folgenden VBA-Code verwenden. Er überprüft, ob der Ordner bereits vorhanden ist, und erstellt ihn gegebenenfalls.

Sub PrüfenAnlegenPDFspeichern()
    Dim Pfad As String
    Dim Ordner As String
    Dim Datei As String
    Dim Endpfad As String

    With ActiveSheet
        Ordner = .Cells(3, 8).Value & "\" & .Cells(7, 18).Value & "\" & .Cells(4, 8).Value & " " & _
                 .Cells(6, 8).Value ' Namen der Unterordner
        Datei = "\" & .Cells(7, 23).Value & "_" & .Cells(5, 8).Value & ".pdf" ' Dateiname PDF
    End With

    Pfad = "R:\kst128000\individual\Audits\" & Ordner ' Grundpfad

    If Dir(Pfad, vbDirectory) = "" Then
        Call MakeDir(Pfad)
        MsgBox "Verzeichnis erstellt."
    Else
        MsgBox "Das Verzeichnis existiert bereits!"
    End If

    Endpfad = Pfad & Datei
    MsgBox "Verzeichnis " & Endpfad

    Sheets(Array("Deckblatt Q-Fähigk ", "Proz-BalkenMatrix", "Bewertungsmatrix", _
                 "QTP dt.", "Maßnahmenplan")).Select
    Sheets("Maßnahmenplan").Activate

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    Endpfad, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

Private Function MakeDir(FolderName As String)
    Dim S As Variant, I As Long, F As String
    S = Split(FolderName, "\")

    For I = LBound(S) To UBound(S)
        If S(I) <> "" Then
            F = F & S(I) & "\"
            On Error Resume Next
            MkDir F
            On Error GoTo 0
        End If
    Next I
End Function

Häufige Fehler und Lösungen

  • Fehler beim Zugriff auf Pfad/Datei: Stelle sicher, dass der Pfad korrekt ist und dass Du die notwendigen Berechtigungen hast. Überprüfe auch, ob der Ordnername korrekt generiert wird.

  • Verzeichnis existiert bereits!: Wenn diese Meldung erscheint, ist der Ordner bereits vorhanden. Du solltest sicherstellen, dass der Code nicht versucht, den Ordner erneut zu erstellen.


Alternative Methoden

Wenn Du einen Ordner erstellen und mehrere Dateien als PDF speichern möchtest, kannst Du auch eine Kombination aus Makros und Excel-Funktionen verwenden. Eine andere Möglichkeit ist die Nutzung von Power Automate, um die PDF-Dateien automatisch zu generieren und zu speichern.


Praktische Beispiele

Angenommen, Du hast eine "Bewertungsmatrix" in Excel, die Du regelmäßig als PDF speichern möchtest. Mit dem oben genannten VBA-Skript kannst Du die Matrix automatisch in einem bestimmten Ordner ablegen, ohne manuell eingreifen zu müssen. Passe einfach die Zellreferenzen an Deine spezifischen Anforderungen an.


Tipps für Profis

  • Benutze aussagekräftige Namen für Deine Ordner. Vermeide es, den Begriff "Name" in Variablen zu verwenden, da dies zu Verwirrung führen kann.

  • Teste den Code in einer sicheren Umgebung, bevor Du ihn auf wichtige Daten anwendest. So kannst Du sicherstellen, dass alles wie gewünscht funktioniert.

  • Denke daran, dass MkDir nur ein Verzeichnis auf einmal erstellt. Verwende die MakeDir-Funktion, um mehrere Ebenen zu erstellen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die PDF-Datei korrekt gespeichert wird?
Überprüfe den Pfad und den Dateinamen in der MsgBox, bevor Du den Export ausführst.

2. Kann ich mehrere Arbeitsblätter gleichzeitig als PDF speichern?
Ja, Du kannst mehrere Arbeitsblätter in der Sheets(Array(...)).Select-Anweisung auflisten, um sie als eine einzige PDF-Datei zu exportieren.

3. Was passiert, wenn der Ordner nicht existiert?
Das Skript erstellt den Ordner automatisch, wenn er nicht vorhanden ist, bevor es die Datei speichert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige