Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Relativer Pfad zu Unterordner

Forumthread: Relativer Pfad zu Unterordner

Relativer Pfad zu Unterordner
18.12.2016 17:00:28
Daniel
Hallo Zusammen
Ich möchte aus einem Excelsheet ein PDF in ein Unterordner des aktuellen Pfades der Exceldatei speichern.
Hier mein Code, der auch läuft:
Sheets("BriefD").Select
With ActiveSheet.PageSetup
.PaperSize = xlPaperA4 'Festlegung auf Hochformat
.Orientation = xlPortrait 'Seitenbreite definieren
.FitToPagesWide = 1 'Seitenhöhe definieren
.FitToPagesTall = False
.Zoom = False
End With
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Format(Date, "YYYYMMDD") & "_Abrechnung_AdF_" & ActiveSheet.Range("E4").Value & " .pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
Wenn ich jedoch versuche denn Unterordner noch einzupflegen, bekomme ich immer einen Abruch!!!!
Ich weiss Jedoch nicht wiso, also hat jemand eine Idee wie dass richtig geht?
Gruss Daniel
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Relativer Pfad zu Unterordner
18.12.2016 19:37:23
Henner
Hallo Daniel
Wie heisst denn der Unterordner? Hat der Unterordner immer den gleichen Namen? Um Fehler zu vermeiden würde ich vor Ausführen der PDF Erstellung prüfen, ob der Unterordner auch existiert und ihn - wenn nicht - anlegen lassen:

If Dir(ThisWorkbook.Path & "\Unterordner", vbDirectory) = "" Then MkDir (ThisWorkbook.Path & "\ _
Unterordner")
Anschliessend Deine Zeile ergänzen:

ThisWorkbook.Path & "\Unterordner\" & Format(Date, "YYYYMMDD") & "_Abrechnung_AdF_" &  _
ActiveSheet.Range("E4").Value & " .pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
Tip: Wenn Du den Unterordner am Anfang als Variable deklarierst kannst Du Deine PDF Dokumente automatisch nach (Geschäfts-) Jahr sortieren lassen und bekommst für jedes Jahr einen neuen Ordner erstellt:

Unterordner = Format(Date, "YYYY")
Funktioniert? Gruss Henner
Anzeige
AW: Relativer Pfad zu Unterordner
18.12.2016 20:04:24
Daniel
Hallo Henner
Ne, funktioniert nicht, ich habs probiert aber bekomme einen Fehler?
Userbild
Gruss Daniel
AW: Relativer Pfad zu Unterordner
19.12.2016 20:35:29
Henner
Hallo Daniel
Du hast die Zeile nicht so übernommen wie von mir vorgeschlagen. Leider werden Zeilenumbrüche in diesem Forum so formatiert, dass man den Code nicht einfach raus kopieren kann sondern die Zeilenumbrüche manuell nachkorrigieren muss. Für ein Excel VBA Forum ist das schade, ist aber nunmal so.
Hier der komplette Code nochmal als Textdatei, dort kannst Du ihn 1:1 raus kopieren und bei Dir einsetzen:
https://www.herber.de/bbs/user/110110.txt
Eine der Variablen strFolder musst Du mit Hochkomma auskommentieren. Entweder heisst Dein Ordner "Unterordner" oder er hat das aktuelle Jahr als Namen.
Bitte den Haken bei "Beitrag offen" setzen, wenn das Thema noch nicht erledigt ist. Ich habe jetzt nur zufällig gesehen, dass Dein Problem noch nicht gelöst ist.
Funktioniert? Gruss Henner
Anzeige
AW: Relativer Pfad zu Unterordner
20.12.2016 05:24:03
Daniel
Hallo Henner
Super Ok dass mit dem Forum muss man wissen, Hauptsache jetzt funktioniert
Besten Dank, jetzt läufts.
Gruss Daniel
Schön, danke für die Rückmeldung (ERL)
20.12.2016 20:15:48
Henner
.
;
Anzeige

Infobox / Tutorial

Relativer Pfad zu Unterordner in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen relativen Pfad zu einem Unterordner in Excel VBA zu verwenden, folge diesen Schritten:

  1. Prüfe, ob der Unterordner existiert. Du kannst dafür den folgenden Code verwenden:

    If Dir(ThisWorkbook.Path & "\Unterordner", vbDirectory) = "" Then
       MkDir (ThisWorkbook.Path & "\Unterordner")
    End If
  2. Exportiere dein Arbeitsblatt als PDF. Füge diesen Code in dein VBA-Modul ein:

    Sheets("BriefD").Select
    With ActiveSheet.PageSetup
       .PaperSize = xlPaperA4
       .Orientation = xlPortrait
       .FitToPagesWide = 1
       .FitToPagesTall = False
       .Zoom = False
    End With
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ThisWorkbook.Path & "\Unterordner\" & Format(Date, "YYYYMMDD") & "_Abrechnung_AdF_" & ActiveSheet.Range("E4").Value & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
  3. Testen: Führe das Skript aus und überprüfe, ob die PDF im angegebenen Unterordner gespeichert wird.


Häufige Fehler und Lösungen

  • Fehler beim Speichern der PDF: Wenn Du einen Fehler erhältst, könnte es daran liegen, dass der Unterordner nicht existiert oder falsch benannt ist. Stelle sicher, dass der Ordner korrekt erstellt wird, bevor Du versuchst, die PDF zu speichern.

  • Zeilenumbrüche im Code: Achte darauf, dass Zeilenumbrüche im Forum möglicherweise nicht richtig übernommen werden. Kopiere den Code sorgfältig und stelle sicher, dass alle Zeilen korrekt formatiert sind.


Alternative Methoden

Wenn Du einen relativen Pfad in Excel VBA verwenden möchtest, gibt es auch alternative Ansätze:

  • Verwendung von Variablen für den Ordnernamen: Du kannst den Namen des Unterordners als Variable deklarieren, sodass Du diesen einfach ändern kannst, ohne den gesamten Code anpassen zu müssen.

    Dim Unterordner As String
    Unterordner = "MeinUnterordner"
  • Dynamische Ordnerstrukturen: Erstelle eine Ordnerstruktur, die auf dem aktuellen Jahr oder anderen Kriterien basiert. Zum Beispiel:

    Unterordner = Format(Date, "YYYY")

Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie Du einen relativen Pfad in einem VBA-Skript verwenden kannst:

Sub SpeicherePDF()
    Dim Unterordner As String
    Unterordner = "Unterordner"

    ' Prüfen, ob der Unterordner existiert
    If Dir(ThisWorkbook.Path & "\" & Unterordner, vbDirectory) = "" Then
        MkDir (ThisWorkbook.Path & "\" & Unterordner)
    End If

    ' Exportiere das Blatt als PDF
    Sheets("BriefD").Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ThisWorkbook.Path & "\" & Unterordner & "\" & Format(Date, "YYYYMMDD") & "_Abrechnung_AdF_" & ActiveSheet.Range("E4").Value & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Mit diesem Skript kannst Du sicherstellen, dass Deine PDF-Datei immer im richtigen Unterordner gespeichert wird.


Tipps für Profis

  • Verwende Kommentare: Kommentiere Deinen Code, um später leichter zu verstehen, was jeder Teil des Codes bewirken soll. Dies ist besonders nützlich, wenn Du in einem Team arbeitest.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um sicherzustellen, dass bei unerwarteten Problemen das Skript nicht einfach abstürzt. Du kannst On Error Resume Next verwenden, um Fehlermeldungen abzufangen.

  • Optimierung der Datenquelle: Wenn Du regelmäßig mit einer Excel-Datenquelle arbeitest, überlege, wie Du den relativen Pfad effizient nutzen kannst, um Daten dynamisch zu verlinken.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Unterordner immer existiert?
Verwende den Dir-Befehl, um zu prüfen, ob der Ordner vorhanden ist, und erstelle ihn mit MkDir, wenn er nicht existiert.

2. Was mache ich, wenn mein Code nicht funktioniert?
Überprüfe alle Zeilen auf korrekte Syntax und stelle sicher, dass Du alle notwendigen Variablen definiert hast. Achte auch auf korrekte Pfadangaben.

3. Kann ich den relativen Pfad für andere Dateiformate verwenden?
Ja, der Ansatz funktioniert nicht nur für PDFs, sondern auch für andere Formate wie Excel oder Textdateien. Du musst lediglich den Exportbefehl anpassen.

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