VBA Speichern unter - Dialog
Schritt-für-Schritt-Anleitung
Um den VBA Speichern unter Dialog mit einem vordefinierten Dateinamen und Pfad zu öffnen, kannst du folgende Schritte ausführen:
-
Öffne den VBA-Editor in Excel (Alt + F11).
-
Erstelle ein neues Modul (Einfügen > Modul).
-
Füge den folgenden Code ein:
Sub SpeichernUnter()
Dim objFileDialog As FileDialog
Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
With objFileDialog
.InitialFileName = "C:\temp\Testmappe.xlsx" ' Vordefinierter Dateiname
.FilterIndex = 1 ' Filter für Dateityp
If .Show Then
.Execute
End If
End With
Set objFileDialog = Nothing
End Sub
-
Passe den InitialFileName und die FilterIndex nach Bedarf an.
-
Führe das Makro aus, um den Speichern unter Dialog zu öffnen.
Häufige Fehler und Lösungen
-
Problem: Der Dialog öffnet sich mit einem unerwünschten Dateityp.
- Lösung: Stelle sicher, dass der
FilterIndex korrekt gesetzt ist. Zum Beispiel, für .xlsx sollte FilterIndex = 1 verwendet werden.
-
Problem: Der Pfad wird nicht richtig angezeigt.
- Lösung: Überprüfe, ob der angegebene Ordner existiert. Wenn nicht, wird der Dialog standardmäßig im letzten verwendeten Ordner geöffnet.
-
Problem: Die Dateityp-Vorgabe funktioniert nicht.
- Lösung: Setze den
FileFormat direkt im objFileDialog. Beachte, dass FileFormat nicht in allen Versionen von Excel verfügbar ist.
Alternative Methoden
Es gibt verschiedene Möglichkeiten, um den Speichern unter Dialog zu implementieren:
-
Application.Dialogs verwenden:
Sub SpeichernUnterMitDialog()
Application.Dialogs(xlDialogSaveAs).Show
End Sub
-
VBA Save As Dialog Box:
Verwende FileDialog wie im obigen Beispiel, um eine benutzerfreundlichere Oberfläche zu schaffen.
-
Speichern als PDF:
Wenn du ein Excel-Dokument als PDF speichern möchtest, kannst du folgenden Code verwenden:
Sub SpeichernAlsPDF()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\temp\MeinDokument.pdf"
End Sub
Praktische Beispiele
Hier ist ein Beispiel, das den Dateinamen und den Pfad aus bestimmten Zellen einer Excel-Tabelle übernimmt:
Public Sub SpeichernUnterMitZellen()
Dim objFileDialog As FileDialog
Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
With objFileDialog
.InitialFileName = Sheets("Start").Range("F7").Text & "\" & Sheets("Start").Range("B6").Text
.FilterIndex = 1
If .Show Then
.Execute
End If
End With
Set objFileDialog = Nothing
End Sub
In diesem Beispiel wird der Pfad aus Zelle F7 und der Dateiname aus Zelle B6 entnommen, wodurch du eine dynamische Lösung erhältst.
Tipps für Profis
- Nutze den FilterIndex, um verschiedene Dateitypen in deinem VBA Speichern unter Dialog zu verwalten.
- Überlege, eine Fehlerbehandlung einzubauen, um mögliche Laufzeitfehler zu vermeiden.
- Experimentiere mit
Application.Dialogs(xlDialogSaveAs).Show File Type xlsx, um den Dialog an deine Bedürfnisse anzupassen.
- Halte deine Makros sauber und dokumentiere sie, um die Wartung zu erleichtern.
FAQ: Häufige Fragen
1. Wie kann ich den Dateityp im Speichern unter Dialog vorgeben?
Du kannst den FilterIndex verwenden, um den gewünschten Dateityp auszuwählen, z.B. für .xlsx als FilterIndex = 1.
2. Funktioniert das auch in älteren Excel-Versionen?
Ja, die meisten der oben genannten Methoden sollten in Excel 2010 und später funktionieren, jedoch kann die Unterstützung für bestimmte Funktionen variieren.
3. Wie kann ich das Makro anpassen, um eine PDF zu speichern?
Du kannst den ExportAsFixedFormat Befehl verwenden, um ein Arbeitsblatt als PDF zu speichern, siehe das Beispiel im Abschnitt Praktische Beispiele.