Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datei Speichern unter mit VBA - Dateipfad vorgeben

Datei Speichern unter mit VBA - Dateipfad vorgeben
30.05.2015 20:10:19
coronus
Hallo zusammen,
ich möchte aus einer Excel-Datei heraus mit einem Makro den "Speichern unter"-Dialog aufrufen. Der Dateipfad soll sein: D:\Dateien. Die Ausgangsdatei liegt auf C:\Users\user\Desktop.
Mein Problem: Der Dateipfad ändert sich nicht, es wird als Speicherpfad immer C:\Users\user\Desktop vorgegeben. Das aktuelle Verzeichnis CurDir ändert sich allerdings schon, wie mir die entsprechende MsgBox ausgibt (s.u.). Als Dateiname wird Test.xlsm übernommen.
Sub speichern_unter()
ChDrive "D:\"
ChDir "D:\Dateien\"
MsgBox CurDir
Application.Dialogs(xlDialogSaveAs).Show  "D:\Dateien\Test.xlsm"
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Datei Speichern unter mit VBA - Dateipfad vorgeben
30.05.2015 20:31:13
Nepumuk
Hallo,
so besser?
Sub speichern_unter()
    With Application.FileDialog(msoFileDialogSaveAs)
        .FilterIndex = 2
        .InitialFileName = "D:\Dateien\Test.xlsm"
        If .Show Then .Execute
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: Datei Speichern unter mit VBA - Dateipfad vorgeben
30.05.2015 23:46:27
coronus
Funktioniert, danke! Neues Problem: Auf demselben Weg soll eine Excel-Datei als PDF gespeichert werden. Der unten stehende, angepasste Code gibt eine Fehlermeldung zurück.
Sub speichern_unter()
With Application.FileDialog(msoFileDialogSaveAs)
.FilterIndex = 25
.InitialFileName = "D:\Dateien\Test.pdf"
If .Show Then .Execute
End With
End Sub

Anzeige
AW: Datei Speichern unter mit VBA - Dateipfad vorgeben
31.05.2015 08:03:32
Nepumuk
Hallo,
so geht das:
Sub speichern_unter()
    With Application.FileDialog(msoFileDialogSaveAs)
        .FilterIndex = 25
        .InitialFileName = "D:\Dateien\Test.pdf"
        If .Show Then ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=.SelectedItems(1), Quality:=xlQualityStandard, _
            IncludeDocProperties:=False, IgnorePrintAreas:=False, _
            OpenAfterPublish:=False
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: Datei Speichern unter mit VBA - Dateipfad vorgeben
31.05.2015 11:17:55
coronus
Danke, das bringt mich schon weiter. Allerdings (da war ich wohl zu ungenau) habe ich drei Tabellenblätter, von denen nur das aktuelle (Tabelle1) gespeichert werden soll. Mit deinem Code werden alle Blätter als PDF konvertiert.
Das sollte doch auch kein Problem sein.
Und ich habe noch eine Frage:
Wozu dient die Anweisung Filename:=.SelectedItems(1)?

Anzeige
AW: Datei Speichern unter mit VBA - Dateipfad vorgeben
31.05.2015 11:39:49
Nepumuk
Hallo,
in .SelectedItems(1) steht der ausgewählte Pfad inkl. Dateiname.
Ändere ThisWorkbook in Worksheets("Tabelle1")
Gruß
Nepumuk

AW: Datei Speichern unter mit VBA - Dateipfad vorgeben
31.05.2015 12:04:26
coronus
Vielen Dank, Problem gelöst!
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dateipfad für "Speichern unter" mit VBA festlegen


Schritt-für-Schritt-Anleitung

Um den "Speichern unter"-Dialog in Excel mit VBA aufzurufen und den Dateipfad vorzugeben, kannst du folgenden Code verwenden:

Sub speichern_unter()
    With Application.FileDialog(msoFileDialogSaveAs)
        .FilterIndex = 2
        .InitialFileName = "D:\Dateien\Test.xlsm"
        If .Show Then .Execute
    End With
End Sub

Hierbei wird der InitialFileName auf "D:\Dateien\Test.xlsm" gesetzt, so dass der Dialog diesen Pfad als Ausgangspunkt verwendet.

Wenn du eine andere Datei oder einen anderen Pfad verwenden möchtest, ändere einfach den Pfad in der InitialFileName-Eigenschaft.


Häufige Fehler und Lösungen

  • Fehler: Der Pfad ändert sich nicht

    • Lösung: Stelle sicher, dass du den richtigen Filter für den Dateityp gesetzt hast und dass der Pfad korrekt ist. Manchmal kann der Dialog auf den letzten verwendeten Speicherort zurückspringen.
  • Fehler: PDF wird nicht korrekt gespeichert

    • Lösung: Wenn du eine Excel-Datei als PDF speichern möchtest, kannst du folgenden Code verwenden:
    Sub speichern_unter()
        With Application.FileDialog(msoFileDialogSaveAs)
            .FilterIndex = 25
            .InitialFileName = "D:\Dateien\Test.pdf"
            If .Show Then ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=.SelectedItems(1)
        End With
    End Sub
  • Fehler: Alle Blätter werden gespeichert

    • Lösung: Wenn du nur das aktive Blatt speichern möchtest, ändere ThisWorkbook zu Worksheets("Tabelle1").

Alternative Methoden

Eine weitere Methode, um den "Speichern unter"-Dialog mit vorgegebenem Pfad zu öffnen, ist die Verwendung von Application.Dialogs(xlDialogSaveAs).Show. Hier ein einfaches Beispiel:

Sub speichern_unter()
    ChDrive "D:\"
    ChDir "D:\Dateien"
    Application.Dialogs(xlDialogSaveAs).Show "D:\Dateien\Test.xlsm"
End Sub

Diese Methode hat den Nachteil, dass sie nicht so flexibel ist wie die Verwendung des FileDialog.


Praktische Beispiele

Hier sind einige Beispiele für verschiedene Dateitypen:

  1. Excel-Datei speichern:

    Sub speichern_unter()
        With Application.FileDialog(msoFileDialogSaveAs)
            .FilterIndex = 2
            .InitialFileName = "D:\Dateien\Test.xlsm"
            If .Show Then .Execute
        End With
    End Sub
  2. PDF-Datei speichern:

    Sub speichern_unter()
        With Application.FileDialog(msoFileDialogSaveAs)
            .FilterIndex = 25
            .InitialFileName = "D:\Dateien\Test.pdf"
            If .Show Then ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=.SelectedItems(1)
        End With
    End Sub
  3. CSV-Datei speichern:

    Sub speichern_unter()
        With Application.FileDialog(msoFileDialogSaveAs)
            .FilterIndex = 1
            .InitialFileName = "D:\Dateien\Test.csv"
            If .Show Then ThisWorkbook.SaveAs Filename:=.SelectedItems(1), FileFormat:=xlCSV
        End With
    End Sub

Tipps für Profis

  • Verwendung von Konstanten: Verwende Konstanten für Filterindizes, um deinen Code lesbarer zu machen.
  • Fehlerbehandlung: Implementiere Fehlerbehandlung, um unerwartete Probleme zu vermeiden. Nutze On Error Resume Next und On Error GoTo 0, um Fehler zu ignorieren und anschließend zu überprüfen.
  • Benutzerführung: Informiere den Benutzer über den Speicherort und Dateinamen durch eine MsgBox.

FAQ: Häufige Fragen

1. Kann ich auch den Dateityp vorgeben? Ja, du kannst den Dateityp über die .FilterIndex-Eigenschaft angeben. Hierbei ist es wichtig, dass der Index dem gewünschten Dateiformat entspricht.

2. Wie kann ich den Dialog automatisch schließen? Du kannst den Dialog nicht automatisch schließen, aber durch das Ausführen von .Execute wird der Dialog geschlossen, wenn der Benutzer auf "Speichern" klickt.

3. Ist dieser Code in allen Excel-Versionen kompatibel? Der Code funktioniert in den meisten modernen Excel-Versionen, die VBA unterstützen, einschließlich Excel 2010 und höher.

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