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

Application.Dialogs(xlDialogSaveAs).Show

Forumthread: Application.Dialogs(xlDialogSaveAs).Show

Application.Dialogs(xlDialogSaveAs).Show
08.07.2020 21:22:35
Doc
Hallo,
ich möchte via Pop-up eine Datei speichern untern. Der Dateiname der Datei ist bereits vorbelegt, dass klappt auch soweit. Nun möchte ich jedoch den Datei-Typ explizit vorbelegen. Hierzu habe ich etwas probiert und den Hinweis auf die "51" als Dateityp gefunden. Ich habe verschiedene Konstellationen probiert aber entweder den Dateinamen oder den Typ beides klappt nicht, daher ist im nachfolgenden die 51 auskommentiert. Wer hat einen Tipp?
Application.Dialogs(xlDialogSaveAs).Show (strFilename) '& 51
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.Dialogs(xlDialogSaveAs).Show
08.07.2020 21:57:19
ralf_b
versuch mal das
erfolg = Application.Dialogs(xlDialogSaveAs).Show(Liganame, 52)
Anzeige
AW: Application.Dialogs(xlDialogSaveAs).Show
08.07.2020 22:12:25
Werner
Hallo,
so:
strFilename = "DieDatei"
Application.Dialogs(xlDialogSaveAs).Show (strFilename), 51
Gruß Werner
AW: Application.Dialogs(xlDialogSaveAs).Show
09.07.2020 08:09:29
Doc
Hallo Werner,
Danke, damit ist zwar das Format vorbelegt aber der Dateiname (Vorbelegung) zum Speichern unter... weg. Ich vermute es liegt daran, dass ich die Datei vorher als *csv öffne und diesen Wert dann mitgeben:
'**Dateifilter**
strFilter = "Excel-Dateien(*.csv*), *.csv*"
'**Vorbelgung Pfad**
ChDrive "D"
ChDir "D:\xxx
'**Den im Dialogfeld gewählten Namen auslesen**
strFilename = Application.GetOpenFilename(strFilter)
'Dialog speichern unter
Application.Dialogs(xlDialogSaveAs).Show (strFilename), 51
Anzeige
AW: Application.Dialogs(xlDialogSaveAs).Show
09.07.2020 13:41:49
Werner
Hallo,
es bringt nichts, wenn du hier einfach mal ein paar Zeilen deines Codes hier einstellst.
Bitte den gesamten Code.
Gruß Werner
AW: Application.Dialogs(xlDialogSaveAs).Show
09.07.2020 14:01:44
Doc
Hallo,
Private Sub CommandButton2_Click()
Dim format As Range
Dim lngLast As String
'**Dateifilter**
strFilter = "Excel-Dateien(*.csv*), *.csv*"
'**Vorbelgung Pfad**
ChDrive "D"
ChDir "D:\xxx\"
'**Den im Dialogfeld gewählten Namen auslesen**
strFilename = Application.GetOpenFilename(strFilter)
'**Prüfen, ob eine gültige Datei ausgewählt wurde**
If strFilename = False Then Exit Sub
'**Gewählte Datei öffnen**
Set wb = Workbooks.Open(strFilename)
'Dialog speichern unter
Application.Dialogs(xlDialogSaveAs).Show (strFilename), 51
End Sub

Anzeige
AW: Application.Dialogs(xlDialogSaveAs).Show
09.07.2020 14:02:27
Doc
.
AW: Application.Dialogs(xlDialogSaveAs).Show
09.07.2020 15:07:01
Werner
Hallo,
na ja, der ganze Code scheint mir das dann wieder nicht zu sein. Oder warum hast du da Variablen deklariert, die du im gezeigten Code gar nicht verwendest?
Zu den Variablen dann auch noch was.
Format ist ein VBA-Schlüsselwort und sollte nicht als Name für eine Variable verwendet werden
Und lngLast soll ja wohl die letzte belegte Zeile aufnehmen. Das wäre dann aber eine Variable vom Typ Long und nicht String.
Seis drum:
du hast in der Variablen für den Filenamen den kompletten Pfad mit drin.
Sprich es muss der Dateiname aus dem Pfad extrahiert werden. Dann muss auch noch das Dateisuffix vom Dateinamen entfernt werden.
Private Sub CommandButton2_Click()
Dim strFilter As String, varFilename As Variant
'**Dateifilter**
strFilter = "CSV-Dateien(*.csv*), *.csv*"
'**Vorbelgung Pfad**
ChDrive "D"
ChDir "D:\xxx\"
'**Den im Dialogfeld gewählten Namen auslesen**
varFilename = Application.GetOpenFilename(strFilter)
'**Prüfen, ob eine gültige Datei ausgewählt wurde**
If varFilename = False Then Exit Sub
'**Gewählte Datei öffnen**
Set wb = Workbooks.Open(varFilename)
'Dialog speichern unter
'Dateiname extrahieren
varFilename = Mid$(varFilename, InStrRev(varFilename, "\") + 1)
'Dateisuffix entfernen
varFilename = Left(varFilename, InStrRev(varFilename, ".") - 1)
Application.Dialogs(xlDialogSaveAs).Show (varFilename), 51
End Sub
Deine Variabel strFilname habe ich umbenannt in varFilename und als Variant deklariert. Eine String-Variable kann nämlich keinen Fehlerwert aufnehmen.
Gruß Werner
Anzeige
;
Anzeige

Infobox / Tutorial

Anwendung von Application.Dialogs(xlDialogSaveAs) in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Dialog Application.Dialogs(xlDialogSaveAs) in VBA zu verwenden, folge diesen Schritten:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Modul einfügen: Klicke mit der rechten Maustaste im Projektfenster und wähle Einfügen > Modul.

  3. Code schreiben: Füge den folgenden Code in das Modul ein:

    Private Sub CommandButton2_Click()
        Dim strFilter As String, varFilename As Variant
        '**Dateifilter**
        strFilter = "CSV-Dateien(*.csv*), *.csv*"
        '**Vorbelegung Pfad**
        ChDrive "D"
        ChDir "D:\xxx\"
        '**Den im Dialogfeld gewählten Namen auslesen**
        varFilename = Application.GetOpenFilename(strFilter)
        '**Prüfen, ob eine gültige Datei ausgewählt wurde**
        If varFilename = False Then Exit Sub
        '**Gewählte Datei öffnen**
        Set wb = Workbooks.Open(varFilename)
        'Dialog speichern unter
        'Dateiname extrahieren
        varFilename = Mid$(varFilename, InStrRev(varFilename, "\") + 1)
        'Dateisuffix entfernen
        varFilename = Left(varFilename, InStrRev(varFilename, ".") - 1)
        Application.Dialogs(xlDialogSaveAs).Show (varFilename), 51
    End Sub
  4. Button hinzufügen: Füge einen Button in dein Excel-Arbeitsblatt ein und verlinke ihn mit CommandButton2_Click.

  5. Ausführen: Klicke auf den Button, um das Dialogfeld „Speichern unter“ zu öffnen.


Häufige Fehler und Lösungen

  • Fehler: Dateiname wird nicht vorbelegt
    Lösung: Stelle sicher, dass du den Dateinamen korrekt extrahierst und das Dateisuffix entfernst, wie im obigen Beispiel gezeigt.

  • Fehler: Dialog öffnet sich nicht
    Lösung: Überprüfe, ob du die richtige Excel-Version verwendest und ob die VBA-Umgebung korrekt eingerichtet ist.

  • Fehler: Typkonflikt bei Variablen
    Lösung: Verwende den Variant-Typ für varFilename, um Fehler bei ungültigen Werten zu vermeiden.


Alternative Methoden

Falls du den Dialog auch ohne Application.Dialogs(xlDialogSaveAs) verwenden möchtest, kannst du mit Application.Dialogs(xlDialogOpen).Show eine ähnliche Funktionalität erreichen. Damit kannst du Dateien öffnen und anschließend mit dem SaveAs-Befehl speichern, wenn nötig.


Praktische Beispiele

Hier ist ein weiteres Beispiel, wie du den Dialog Save As verwenden kannst:

Sub SaveFileWithDialog()
    Dim filepath As String
    filepath = Application.Dialogs(xlDialogSaveAs).Show
    If filepath <> "" Then
        'Datei unter dem gewählten Pfad speichern
        ActiveWorkbook.SaveAs Filename:=filepath, FileFormat:=xlCSV
    End If
End Sub

In diesem Beispiel wird ein Dialog angezeigt, um den Speicherort und den Dateinamen festzulegen.


Tipps für Profis

  • Argumente anpassen: Du kannst Application.Dialogs(xlDialogSaveAs).Show arguments verwenden, um zusätzliche Optionen beim Speichern zu definieren.
  • Dateifilter nutzen: Verwende den Dateifilter, um die Dateitypen im Dialog einzuschränken, was die Benutzererfahrung verbessert.

Beispiel:

Application.Dialogs(xlDialogSaveAs).Show "MeinDateiname", 51
  • Benutzerdefinierte Filter: Erstelle benutzerdefinierte Filter, um den Dialog an spezifische Anforderungen anzupassen.

FAQ: Häufige Fragen

1. Wie kann ich den Standard-Dateityp im Dialog festlegen?
Du kannst dies tun, indem du die entsprechende Zahl in Application.Dialogs(xlDialogSaveAs).Show hinzufügst, wie im Beispiel mit 51 für CSV-Dateien.

2. Ist es notwendig, den Dateinamen zu extrahieren?
Ja, wenn du den vollständigen Pfad verwendest, musst du den Dateinamen extrahieren und das Dateisuffix entfernen, um Probleme beim Speichern zu vermeiden.

3. Funktioniert dieser Code in allen Excel-Versionen?
Die Verwendung von Application.Dialogs(xlDialogSaveAs) funktioniert in den meisten modernen Excel-Versionen, insbesondere in Excel 2010 und später. Achte darauf, die VBA-Umgebung korrekt einzurichten.

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