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

GetSaveAsFilename

Forumthread: GetSaveAsFilename

GetSaveAsFilename
04.11.2003 09:25:14
Martin Halberstadt
Guten Morgen liebe Forumsbesucher,

kann man dem "Application.GetSaveAsFilename" zuweisen, dass, wenn das "Datei-Speichern-unter"-Fenster geöffnet wird, Excel die Datei automatisch als "Microsoft Excel-Arbeitsmappe" gespeichert wird?

Ein Versuch von mir so so aus, leider ohne Erfolg:

With Application
.DefaultSaveFormat = xlWorkbookNormal
.GetSaveAsFilename
End with

Ich bin für jede Anregung dankbar.

MfG,
Martin
Anzeige

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

Betreff
Datum
Anwender
Anzeige
In solchen Fällen hilft Aufzeichnen - bei mir...
04.11.2003 09:43:45
Michael Scheffler
kommt das raus:

ActiveWorkbook.SaveAs Filename:="D:\test.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=Fals
AW: In solchen Fällen hilft Aufzeichnen - bei mir...
04.11.2003 09:49:41
Martin Halberstadt
Hallo Michael,

wahrscheinlich hätte meine Ziele näher erläutern sollen.

Deinen Vorschlag habe ich bereits ausprobiert um daraus eventuell nützliches in mein Makro zu übernehmen.

Das Problem ist, dass ich so das Blatt schon direkt speichere.
Ich will jedoch, dass die User am Ende meines Makros eine Abfrage bekommen:

"Wollen Sie die aktuelle Arbeitsmappe speichern?"

Wenn Sie "NEIN" drücken, dann ist Makro vorbei, wenn Sie "JA" drücken, dann soll das Speichern unter-Fenster aufpoppen und man kann selbständig speichern.

Es klappt bisher alles, nur steht nun in diesem Fenster als DateiTyp "Alle Dateien", ohne sonstige Auswahlmöglichkeiten. Und deshalb will ich Excel vorgeben, dass dort dann schon der Excel-Standard "Microsoft Excel-Arbeitsmappe" steht.

Hast Du da eine Idee???

Gruß,
Martin
Anzeige
AW: In solchen Fällen hilft Aufzeichnen - bei mir...
04.11.2003 10:42:50
GerdW
Mal aus der Hilfe:

GetSaveAsFilename-Methode
Siehe auch Betrifft Beispiele Zusatzinfo
Zeigt das Standarddialogfeld Speichern unter an und bekommt einen Dateinamen vom Benutzer, ohne jedoch irgendwelche Dateien zu speichern.

Ausdruck.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)

Ausdruck Erforderlich. Ein Ausdruck, der ein Application-Objekt zurückgibt.

InitialFilename Optionaler Variant-Wert. Gibt den vorgeschlagenen Dateinamen an. Wenn Sie dieses Argument nicht angeben, verwendet Microsoft Excel den Namen der aktiven Arbeitsmappe.

FileFilter Optionaler Variant-Wert. Eine Zeichenfolge, die Dateifilterkriterien angibt.

Diese Zeichenfolge besteht aus Zeichenfolgepaaren für den Dateifilter, gefolgt von einer MS-DOS-Platzhalterspezifikation für den Dateifilter, wobei jeder Teil und jedes Paar durch Kommas getrennt sind. Jedes einzelne Paar wird im Dropdownlistenfeld Dateityp angezeigt. Die folgende Zeichenfolge gibt beispielsweise die beiden Dateifilter Text und Add-In an: "Textdateien (*.txt), *.txt, Add-In-Dateien (*.xla), *.xla".

Um mehrere MS-DOS-Platzhalterausdrücke für einen einzelnen Dateifiltertyp anzugeben, trennen Sie die Platzhalterausdrücke mit Semikolons. Beispiel: "Visual Basic-Dateien (*.bas; *.txt),*.bas;*.txt".

Wenn Sie dieses Argument nicht angeben, wird der Standardwert "Alle Dateien (*.*),*.*" verwendet.

FilterIndex Optionaler Variant-Wert. Gibt die Indexnummer der Standarddatei-Filterkriterien an, von 1 bis zu der Anzahl von in FileFilter angegebenen Filtern. Wenn Sie dieses Argument nicht angeben oder es größer als die Anzahl von vorhandenen Filtern ist, so wird der erste Dateifilter verwendet.

Title Optionaler Variant-Wert. Gibt den Titel des Dialogfeldes an. Wenn Sie dieses Argument nicht angeben, wird der Standardtitel verwendet.

ButtonText Optionaler Variant-Wert. Nur bei Macintosh.

Anmerkungen
Diese Methode gibt den ausgewählten Dateinamen oder den vom Benutzer eingegebenen Namen zurück. Der zurückgegebene Name kann eine Pfadangabe enthalten. Gibt False zurück, wenn der Benutzer das Dialogfeld mit Abbrechen verlässt.

Diese Methode kann u.U. das aktuelle Laufwerk oder den aktuellen Ordner ändern.

Beispiel
In diesem Beispiel wird das Dialogfeld Speichern unter mit einem Dateifilter für Textdateien angezeigt. Wenn der Benutzer einen Dateinamen wählt, wird dieser in einem Meldungsdialogfeld angezeigt.

fileSaveName = Application.GetSaveAsFilename( _
fileFilter:="Text Files (*.txt), *.txt")
If fileSaveName <> False Then
MsgBox "Save as " & fileSaveName
End If

Gerd
Anzeige
AW: In solchen Fällen hilft Aufzeichnen - bei mir...
04.11.2003 10:56:06
Martin Halberstadt
Hallo Gerd,

die Datei wird nun immer unter "FALSE" gespeichert. Leider IMMER. Sogar, wenn ich im Dialog-Fenster "Datei speichern unter..." auf "Abbrechen" gehe.

Sie wird in jedem Fall abgespeichert. Wie kann das sein bzw. wie ist es zu unterbinden?

Gruß,
Martin
AW: In solchen Fällen hilft Aufzeichnen - bei mir...
04.11.2003 11:05:12
GerdW
Ohne Code ist es nicht leicht herauszufinden, wo der Fehler ist.

Gerd
Anzeige
AW: In solchen Fällen hilft Aufzeichnen - bei mir...
04.11.2003 11:08:53
Martin Halberstadt
Hallo Gerd,

hier ist mein Code:


Sub TestDruckundSpeichern()
'ActiveSheet.PrintOut
If MsgBox(prompt:="Möchten Sie das Arbeitsblatt nun speichern?", Buttons:=vbYesNo + vbQuestion) = vbYes Then
ActiveWorkbook.SaveAs fileSaveName = Application.GetSaveAsFilename( _
fileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
If fileSaveName <> False Then
MsgBox "Save as " & fileSaveName
End If
End If
End Sub


Ziel des Ganzen:
nach dem Ausdruck des Tabellenblattes soll nach "Ja"-Klick in der Box das Dialog-Fenster "Datei speichern unter..." erscheinen, mit dem Excel-Standard als Datei-Typ.
Mehr sollte mein Makro eigentlich nicht können müssen.

Gruß,
Martin
Anzeige
AW: In solchen Fällen hilft Aufzeichnen - bei mir...
04.11.2003 11:33:35
GerdW
Option Explicit

Sub Save_as()
Dim filesavename As Variant
If MsgBox(prompt:="Möchten Sie das Arbeitsblatt nun speichern?", Buttons:=vbYesNo + vbQuestion) _
= vbNo Then Exit Sub
filesavename = Application.GetSaveAsFilename( _
fileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
If filesavename <> False Then
ActiveWorkbook.SaveAs filesavename
End If
End Sub


Gerd
Anzeige
Super!!!
04.11.2003 11:38:06
Martin Halberstadt
Hallo Gerd,

so funktioniert es einwandfrei.
Hab vielen Dank für Deine Hilfe.

Einen schönen Tag wünsch ich Dir noch.

MfG,
Martin
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Anwendung von GetSaveAsFilename in Excel VBA


Schritt-für-Schritt-Anleitung

Um das Dialogfeld "Speichern unter" in Excel VBA zu nutzen und dabei den Dateityp auf "Microsoft Excel-Arbeitsmappe" voreinstellen, kannst du die Methode Application.GetSaveAsFilename verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du dies umsetzen kannst:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)" und wähle Einfügen > Modul.
  3. Gib den folgenden Code ein:

    Sub SpeichernUnter()
       Dim fileSaveName As Variant
    
       If MsgBox("Möchten Sie die Arbeitsmappe speichern?", vbYesNo + vbQuestion) = vbYes Then
           fileSaveName = Application.GetSaveAsFilename( _
               fileFilter:="Microsoft Excel-Arbeitsmappe (*.xlsx), *.xlsx")
    
           If fileSaveName <> False Then
               ActiveWorkbook.SaveAs fileSaveName
           End If
       End If
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle SpeichernUnter und klicke auf Ausführen.

Jetzt solltest du das Speichern unter-Fenster mit dem voreingestellten Dateityp "Microsoft Excel-Arbeitsmappe" sehen.


Häufige Fehler und Lösungen

  • Problem: Die Datei wird als "FALSE" gespeichert, selbst wenn du auf "Abbrechen" klickst.

    • Lösung: Stelle sicher, dass du die Variable fileSaveName richtig abfragst, bevor du die Datei speicherst. Der überprüfte Code sollte so aussehen:
      If fileSaveName <> False Then
      ActiveWorkbook.SaveAs fileSaveName
      End If
  • Problem: Der Dateityp wird nicht korrekt angezeigt.

    • Lösung: Achte darauf, dass du den fileFilter richtig definiert hast, wie im obigen Beispiel gezeigt.

Alternative Methoden

Eine alternative Methode, um das Speichern unter zu ermöglichen, ist die Verwendung von ActiveWorkbook.SaveAs direkt, nachdem du den Dateinamen über GetSaveAsFilename erhalten hast. Beispiel:

Sub SpeichernDirekt()
    Dim fileName As Variant
    fileName = Application.GetSaveAsFilename()
    If fileName <> False Then
        ActiveWorkbook.SaveAs fileName
    End If
End Sub

Diese Methode bietet dir ein einfacher gestaltetes Dialogfeld ohne spezifische Dateifilter.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung von GetSaveAsFilename:

  1. Speichern unter mit Textdateien:

    Sub SpeichernAlsText()
       Dim fileName As Variant
       fileName = Application.GetSaveAsFilename( _
           fileFilter:="Textdateien (*.txt), *.txt")
       If fileName <> False Then
           ActiveWorkbook.SaveAs fileName, xlText
       End If
    End Sub
  2. Speichern unter mit Bestätigung:

    Sub SpeichernMitBestätigung()
       Dim fileName As Variant
       If MsgBox("Möchten Sie die Datei speichern?", vbYesNo) = vbYes Then
           fileName = Application.GetSaveAsFilename()
           If fileName <> False Then
               ActiveWorkbook.SaveAs fileName
           End If
       End If
    End Sub

Tipps für Profis

  • Nutze die InitialFilename-Option von Application.GetSaveAsFilename, um einen Standarddateinamen vorzuschlagen.
  • Verwende FilterIndex, um den gewünschten Filter anzugeben, wenn du mehrere Filter in fileFilter definierst.
  • Experimentiere mit verschiedenen Dateiformaten, indem du die SaveAs-Methode anpasst (z.B. xlWorkbookDefault für die Standard-Excel-Datei).

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen GetSaveAsFilename und ActiveWorkbook.SaveAs?
GetSaveAsFilename öffnet nur das Dialogfeld, um den Dateinamen zu erhalten, ohne die Datei tatsächlich zu speichern. ActiveWorkbook.SaveAs speichert die Datei mit dem angegebenen Namen.

2. Kann ich die Filteroptionen anpassen?
Ja, du kannst die fileFilter-Option in der GetSaveAsFilename-Methode anpassen, um verschiedene Dateiformate anzubieten.

3. Wie kann ich sicherstellen, dass der Benutzer keine leeren Dateinamen eingibt?
Überprüfe nach dem Erhalt des Dateinamens, ob er leer ist, bevor du den Speichervorgang ausführst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige