407 Aufrufe
Gefragt in Tabellenkalkulation von

Hallo zusammen,

mein Makro zum "Speichern unter" mittel Button funktioniert soweit super, jedoch wird die falsche Dateiendung im Dialogfeld "Speichern unter" vorgeblendet. Ich möchte es gerne als *.xlsm speichern so dass die Makros auch aktiv in der Arbeitsmappe bleiben. 

Hat jemand einen Tip für mich, vielen Dank vorab...

Sub Speichern_unter()
   Dim dialog As Object
   Dim pfad As String
   Dim datei As String
    pfad = "C:\OneDrive\" & Range("Bieterauswahl!B3").Value _
    & Range("Dropdown!C2").Value & Range("Bieterauswahl!B4").Value
   Set dialog = Application.FileDialog(msoFileDialogSaveAs)
   With dialog
      .InitialFileName = pfad
      .Show
   End With
   If dialog <> False Then dialog.Execute
End Sub

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Christian,

bei der Nutzung Application.FileDialog(msoFileDialogSaveAs) kannst du keinen Filefilter angeben. Du musst das anders lösen.

Hier mal zwei Beispiele. Beim 1. Beispiel (speichern_ohne) wird die Datei direkt ohne Dialog gespeichert, beim 2. Beispiel (speichern_mit) wird der Dialog aufgerufen:

Sub speichern_ohne()
'Speichern der Datei ohne Dialog
Dim pfad As String

pfad = "C:\OneDrive\" & Range("Bieterauswahl!B3").Value _
    & Range("Dropdown!C2").Value & Range("Bieterauswahl!B4").Value
If pfad = False Then Exit Sub
ActiveWorkbook.SaveAs Filename:=pfad, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

Sub speichern_mit()
'Speichern der Datei mit Dialog
Dim pfad as String

pfad = Application.GetSaveAsFilename(InitialFileName:="C:\OneDrive\" & Range("Bieterauswahl!B3").Value & Range("Dropdown!C2").Value & Range("Bieterauswahl!B4").Value , filefilter:="Workbook (*.xlsm), *xlsm")
If pfad = False Then Exit Sub
ActiveWorkbook.SaveAs Filename:=pfad

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von

Guten morgen M.O.,

vielen Dank erstmal, ich hab deinen Code "speichern_mit"getestet, da kommt leider nicht der gewünschte Dateityp und auch nicht der Dateiname....

Grüße

Christian

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Christian,

grundsätzlich klappt das Speichern mit dem Makro. Ich hatte das aber natürlich nicht mit deinen Vorgaben probiert.

Bei meinem Nachbau klappt aber mein gepostetes Makro, wobei ich natürlich weiß, wie deine Datei wirklich aussieht.

Eine andere Möglichkeit wäre noch diese:

Sub speichern_mit2()
'Speichern der Datei mit Dialog
Dim pfad As String
Dim datei As String

datei = "C:\OneDrive\" & Worksheets("Bieterauswahl").Range("B3").Value & Worksheets("Dropdown").Range("C2").Value & Worksheets("Bieterauswahl").Range("B4").Value
pfad = Application.GetSaveAsFilename(InitialFileName:=datei, filefilter:="Workbook (*.xlsm), *xlsm")
If pfad = False Then Exit Sub
ActiveWorkbook.SaveAs Filename:=pfad

End Sub

Das ist eigentlich das selbe Makro, das ich schon gepostet habe, nur wird hier der Dateiname mit Pfad in einer seperaten Variable zusammengesetzt.

Probiere doch mal dieses Makro und lasse dir die Variable datei dann einfach per MsgBox anzeigen.

Gruß

M.O.

0 Punkte
Beantwortet von

Ich hab jetzt eine andere Lösung gefunden und hab einen Code wie folgt geändert.

.FilterIndex = 2  '2 = xlsm

Heißt insgesamt wäre der nun so:

Sub Speichern_unter()
   Dim dialog As Object
   Dim pfad As String
   Dim datei As String
    pfad = "C:\OneDrive\" & Range("Bieterauswahl!B3").Value _
    & Range("Dropdown!C2").Value & Range("Bieterauswahl!B4").Value
   Set dialog = Application.FileDialog(msoFileDialogSaveAs)
   With dialog
      .InitialFileName = pfad
      .FilterIndex = 2  '2 = xlsm
      .Show
   End With
   If dialog <> False Then dialog.Execute
End Sub

...