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

Forumthread: VBA Speichern unter - Dialog

VBA Speichern unter - Dialog
30.03.2020 20:16:06
MB12
Hallo zusammen,
ich suche mir 'nen Wolf.
Mein Ziel: Datei ABC.xlsm auf Laufwerk y soll auf Laufwerk z gespeichert werden.
Dazu soll der User einen Vorschlag bekommen, wie der neue Dateiname heißen soll incl. Pfadangabe.
Unter excel-inside.de habe ich folgendes gefunden:
Sub SpeichernUnter()
'Dialogfeld "Speichern unter" aufrufen
'und dabei den Dateipfad und den Dateinamen vorgeben
Dim strDateiname As String
ChDrive "c:\"
ChDir "\temp\"
strDateiname = ("Testmappe.xlsx")  'ursprünglich .xls
Application.Dialogs(xlDialogSaveAs).Show (strDateiname)
End Sub
Der Speichern-Dialog öffnet sich zwar, aber im Laufwerk y mit Dateityp .xlsm - also wie die ursprüngliche Datei....
Auch wenn ich als ChDir "c:\temp\" angebe und ChDrive weglasse, habe ich das gleiche Ergebnis.
Was muss ich ändern?
Vielen Dank im Voraus - und bleibt gesund
Margarete
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Speichern unter - Dialog
30.03.2020 21:02:36
Nepumuk
Hallo Margarete,
gibt es denn den Ordner? Ich würde das so machen:
Public Sub Test()
    Dim objFileDialog As FileDialog
    Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
    With objFileDialog
        .InitialFileName = "C:\temp\Testmappe.xlsx"
        .FilterIndex = 1
        If .Show Then Call .Execute
    End With
    Set objFileDialog = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Speichern unter - Dialog
31.03.2020 09:26:53
MB12
Hallo lieber Nepomuk,
danke schön, funktioniert mit einer kleinen Ausnahme: Das FileFormat .xlsm soll auch vorgeschlagen werden.
Hier mein aktuelles Makro:
Public Sub SpeichernUnter()
Dim objFileDialog As FileDialog
Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
With objFileDialog
.InitialFileName = Sheets("Start").Range("F7").Text _
& "\" & Range("B6").Text  'oder .Value
.FileFormat = 52    '******Methode oder Datenobjekt nicht gefunden ****
.FilterIndex = 1
If .Show Then Call .Execute
End With
Set objFileDialog = Nothing
End Sub
'Wert in F7: X:\Elektro-ALS\GMP_Parameter
'Wert in B8 als Formel: DFVN2005VI_xxxxx_gmp_messages_V1.0.xlsm
Danke für weitere Unterstützung!!
LG, Margarete
Anzeige
wie üblich vergessen auf "offen zu stellen"
31.03.2020 09:38:54
MB12
LG, Margarete
AW: VBA Speichern unter - Dialog
31.03.2020 10:16:37
peterk
Hallo
FilterIndex = 2 (FileFormat funktioniert nicht)
AW: VBA Speichern unter - Dialog
31.03.2020 10:23:56
MB12
Hallo Peter (?),
dann wäre also FilterIndex = 1 entsprechend xlsx?
kommt in meine Excel VBA Schnipsel-Sammlung
Ganz herzlichen Dank - und bleib gesund. Mich haben sie ins HomeOffice verfrachtet wegen Alter = 63.
LG, Margarete
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne den VBA-Editor in Excel (Alt + F11).

  2. Erstelle ein neues Modul (Einfügen > Modul).

  3. 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
  4. Passe den InitialFileName und die FilterIndex nach Bedarf an.

  5. 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:

  1. Application.Dialogs verwenden:

    Sub SpeichernUnterMitDialog()
       Application.Dialogs(xlDialogSaveAs).Show
    End Sub
  2. VBA Save As Dialog Box: Verwende FileDialog wie im obigen Beispiel, um eine benutzerfreundlichere Oberfläche zu schaffen.

  3. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige