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

Forumthread: msoFileDialogSaveAs

msoFileDialogSaveAs
25.01.2017 13:58:46
Georg
Ich würde gerne in die Prozedur noch einen Filefilter setzen *.xlsm, krieg den aber nicht rein.
Auszug:
Sub()
......
Pfad = "Q:\Personal Leitung\Abrechnung\Gehaltsläufe\2017\BPx\"
Set Dialog = Application.FileDialog(msoFileDialogSaveAs)
With Dialog
.InitialFileName = Pfad
.Show
End With
If Dialog False Then Dialog.Execute
...End Sub
Anzeige

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: msoFileDialogSaveAs
25.01.2017 14:08:42
Max2
With Dialog
.Filter.Add "Excel Mappen", "*.xlsm", 1
.
.
End With
AW: msoFileDialogSaveAs
25.01.2017 14:09:31
Max2
Sorry es muss .Filters.Add heißen.
habe das "s" vergessen
AW: msoFileDialogSaveAs
25.01.2017 14:18:10
Georg
Hallo liebe Mitstreiter
bei dem .filters.add..... bekomme ich einen Laufzeitfehler 438, Objekt wird nicht unterstützt oder so ählich.
die zweite Antwort überfordert mich sehr, meine VBA Kenntnisse sind "bescheiden", mehr nicht.
Danke für eine Antwort
Anzeige
AW: msoFileDialogSaveAs
25.01.2017 14:31:36
onur
Hi Georg,
Versuche es so:
Pfad = "Q:\Personal Leitung\Abrechnung\Gehaltsläufe\2017\BPx\"
Set Dialog = Application.FileDialog(msoFileDialogSaveAs)
With Dialog
.Filters.Clear
.Filters.Add "test(test.xls)", "*.xls"
.InitialFileName = Pfad
.Show
End With
If Dialog False Then Dialog.Execute
...End Sub
Anzeige
AW: msoFileDialogSaveAs
25.01.2017 14:38:49
Georg
Der Code mault sofort ab Zeile
.filters.clear
Siehe attached file:
Userbild
AW: msoFileDialogSaveAs
25.01.2017 14:49:40
onur
Pfad: ist als variant oder als string deklariert?
MUSS Variant sein
AW: msoFileDialogSaveAs
25.01.2017 15:03:30
Georg
Liebe Mitstreiter, ich vermute mal es liegt an meinen wenigen Kenntnisssen, der bestehende Code funktioniert nur eben der Filter nicht, was lediglich on top wäre.
Ich füge jetzt einfach mal den kompletten abgeänderten Code hinzu als jpg mit der Fehlermeldung, sollte j-d eine schnelle Lösung haben -gerne, ansonsten auch nicht so schlimm.
Code siehe hier:
Userbild
Anzeige
AW: msoFileDialogSaveAs
25.01.2017 15:04:23
Georg
ich habe das Kontrollkästchen vergessen zu aktivieren. G
AW: msoFileDialogSaveAs
25.01.2017 15:27:39
Werner
Hallo Georg,
Zwischen Set Dialog und .Filters fehlt With Dialog
Set Dialog = ......
With Dialog
.Filters.Clear
Gruß Werner
AW: msoFileDialogSaveAs
25.01.2017 14:09:25
Bernd
Hi,
anscheinend bekommst Du eine Begrüßung sowie Verabschiedung auch nicht rein!
Das mag die Community hier gar nicht.
MfG Bernd
Anzeige
AW: msoFileDialogSaveAs
25.01.2017 14:10:23
onur
Das hier könnte Dir helfen.
DAS in ein MODUL:
Function FileSelection(ByVal Endung As String) As Variant
FileSelection = Application.GetOpenFilename(FileFilter:="Excel-Dateien (" + Endung + ")," + _
Endung, MultiSelect:=True)
End Function

Hier ein Beispiel zum Aufrufen:
Sub CSVimport()
'Makroname zum Impotieren von CSV-Dateien
Dim pfad As Variant
Dim DateinameKurz As Variant
Dim WS As Worksheet
pfad = FileSelection("*.csv")' Hier wird die Funktion aufgerufen _
i>
On Error GoTo weiter
If pfad = False Then Exit Sub
weiter:
u = UBound(pfad)
For i = 1 To UBound(pfad)
Dim TestArray() As String
TestArray = Split(pfad(i), "\")
Dateiname = TestArray(UBound(TestArray))
DateinameKurz = Left(Dateiname, Len(Dateiname) - 4)
ActiveWorkbook.Worksheets.Add
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & pfad(i), Destination:=Range(" _
A1"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
ActiveSheet.Name = DateinameKurz
Next i
End Sub

Anzeige
msoFileDialogSaveAs unterstützt KEINE Filter
25.01.2017 15:47:15
EtoPHG
Hallo Georg
Der FileDialog von Typ msoFileDialogSaveAs unterstützt KEINE Filter, darum musst du dein Vorhaben vergessen!
Gruess Hansueli
P.S. Erstaunlich, dass keiner der Antworter einen kurzen Check ausführt!
AW: msoFileDialogSaveAs unterstützt KEINE Filter
25.01.2017 16:02:28
onur
Hallo Georg,
Jetzt aber!
Public Sub()
Dim pfad As Variant
Pfad = "Q:\Personal Leitung\Abrechnung\Gehaltsläufe\2017\BPx\"
dialog = Application.GetSaveAsFilename(pfad, fileFilter:="Microsoft Excel-Dateien (*.xls), *.xls")
If dialog False Then
ActiveWorkbook.SaveAs dialog
End If
End Sub
Gruß
Onur
Anzeige
bitte kein weiterer SPAM! (owT)
25.01.2017 16:10:58
EtoPHG

AW: bitte kein weiterer SPAM! (owT)
25.01.2017 16:18:07
onur
Hallo,
Hääh?
Was soll diese Nachricht?
Ich habe aus VERSEHEN auf deine Antwort geantwortet, statt auf Georgs Frage
Bitte TASUSEND mal um Entschuldigung für dieses Verbrechen.
Hochachtungsvoll
Onur
Darum ging's H'ueli wohl eher nicht, onur! orT
25.01.2017 20:37:21
Luc:-?
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Darum ging's H'ueli wohl eher nicht, onur! orT
25.01.2017 20:49:13
onur
Hi Luc :-?,
Worum denn?
Kläre mich doch bitte auf.
Gruß
Onur
Um den Inhalt! (Vgle eure BTe!) owT
25.01.2017 20:50:57
Luc:-?
:-?
AW: Um den Inhalt! (Vgle eure BTe!) owT
25.01.2017 20:59:57
onur
Ich verstehe.
Es geht darum, daß er Georg schreibt, er könne sein Vorhaben vergessen, ich danach meine Lösung einstelle, er dies als Spam bezeichnet, und eine halbe Stunde später die gleiche Lösung (leicht verändert) als seine Lösung einstellt?
Anzeige
AW: msoFileDialogSaveAs
25.01.2017 16:06:55
onur
Hallo Georg,
Jetzt aber!
Public Sub()
Dim pfad As Variant
Pfad = "Q:\Personal Leitung\Abrechnung\Gehaltsläufe\2017\BPx\"
dialog = Application.GetSaveAsFilename(pfad, fileFilter:="Microsoft Excel-Dateien (*.xls), *.xls")
If dialog False Then
ActiveWorkbook.SaveAs dialog
End If
End Sub
Gruß
Onur
Anzeige
Die Lösung heisst GetSaveAsFileName
25.01.2017 16:31:46
EtoPHG
Hallo Georg,
Anstelle des FileDialog die GetSaveAsFilename-Methode verwenden:
Public Sub SichernMitMakros()
Dim fileSaveName As Variant
fileSaveName = Application.GetSaveAsFilename( _
InitialFileName:="Q:\Personal Leitung\Abrechnung\" & _
"Gehaltsläufe\2017\BPx\Test.xlsm", _
fileFilter:="Excel File mit Makro (*.xlsm), *.xlsm")
If VarType(fileSaveName) = vbString Then
ThisWorkbook.SaveAs _
fileName:=fileSaveName, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
Else
MsgBox "Sicherung abgebrochen!", vbOKOnly + vbExclamation
End If
End Sub
Gruess Hansueli
Anzeige
AW: Die Lösung heisst GetSaveAsFileName
27.01.2017 11:21:45
Georg
Liebe Mitstreiter, lieber Bernd,
anscheindend hat meine Frage doch einige Mißverständnisse erzeugt (außerhalb des VBA Bereiches :-)
Ich habe dankend die Lösung mit GetSaveAs.. angenommen und dazugelernt, insofern alles gut.
G
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

msoFileDialogSaveAs in Excel VBA richtig nutzen


Schritt-für-Schritt-Anleitung

Um die msoFileDialogSaveAs-Dialogbox in Excel VBA zu verwenden, gehe folgendermaßen vor:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du im Menü auf Einfügen > Modul klickst.
  3. Verwende den folgenden Code, um den Save As-Dialog anzuzeigen:
Sub DateiSpeichern()
    Dim Dialog As FileDialog
    Dim Pfad As String

    Pfad = "Q:\Personal Leitung\Abrechnung\Gehaltsläufe\2017\BPx\"
    Set Dialog = Application.FileDialog(msoFileDialogSaveAs)

    With Dialog
        .InitialFileName = Pfad
        .Filters.Clear
        .Filters.Add "Excel Dateien", "*.xlsm", 1
        If .Show = -1 Then
            ActiveWorkbook.SaveAs .SelectedItems(1)
        End If
    End With
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Laufzeitfehler 438: Dieser Fehler tritt auf, wenn die .Filters-Eigenschaft falsch verwendet wird. Stelle sicher, dass du .Filters.Add korrekt schreibst.

  • Dialog wird nicht angezeigt: Überprüfe, ob die Set Dialog = Application.FileDialog(msoFileDialogSaveAs) Zeile korrekt ist und du das Makro ausführst.

  • Keine Filter angezeigt: Der msoFileDialogSaveAs unterstützt keine Filter. Verwende stattdessen Application.GetSaveAsFilename, wie weiter unten beschrieben.


Alternative Methoden

Wenn du eine Filterfunktion benötigst, solltest du Application.GetSaveAsFilename verwenden, da msoFileDialogSaveAs keine Filter unterstützt. Hier ein Beispiel:

Sub DateiSpeichernAlternativ()
    Dim fileSaveName As Variant

    fileSaveName = Application.GetSaveAsFilename( _
        InitialFileName:="Q:\Personal Leitung\Abrechnung\Gehaltsläufe\2017\BPx\Test.xlsm", _
        FileFilter:="Excel-Workbooks (*.xlsm), *.xlsm")

    If fileSaveName <> False Then
        ThisWorkbook.SaveAs fileName:=fileSaveName, FileFormat:=xlOpenXMLWorkbookMacroEnabled
    Else
        MsgBox "Speichern abgebrochen!", vbOKOnly + vbExclamation
    End If
End Sub

Praktische Beispiele

  1. Dialog mit Filter:
Sub SpeichernMitFilter()
    Dim Dialog As FileDialog
    Set Dialog = Application.FileDialog(msoFileDialogSaveAs)

    With Dialog
        .Filters.Clear
        .Filters.Add "Excel-Dateien", "*.xlsm"
        .Show
    End With
End Sub
  1. Einfacher Save As Dialog:
Sub EinfachSpeichern()
    Dim savePath As Variant
    savePath = Application.GetSaveAsFilename()

    If savePath <> False Then
        ActiveWorkbook.SaveAs Filename:=savePath
    End If
End Sub

Tipps für Profis

  • Verwende Variant für Pfad-Deklarationen: Dadurch können verschiedene Datentypen gespeichert werden, was die Flexibilität erhöht.
  • Nutze .Filters.Clear: Dies stellt sicher, dass alte Filter gelöscht werden, bevor neue hinzugefügt werden.
  • Teste deinen Code regelmäßig, um sicherzustellen, dass die Dialogbox wie gewünscht funktioniert und dass alle Filter korrekt angewendet werden.

FAQ: Häufige Fragen

1. Unterstützt msoFileDialogSaveAs Filter?
Nein, der msoFileDialogSaveAs unterstützt keine Filter. Verwende Application.GetSaveAsFilename für Filteroptionen.

2. Wie kann ich einen Standardpfad für den Dialog festlegen?
Verwende die .InitialFileName-Eigenschaft, um einen Standardpfad vorzugeben.

3. Was ist der Unterschied zwischen msoFileDialogSaveAs und GetSaveAsFilename?
msoFileDialogSaveAs öffnet eine Dialogbox, während GetSaveAsFilename eine Dateipfad-Variable zurückgibt, ohne die Datei direkt zu speichern.

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