Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

SpeichernUnter-Dialog

Betrifft: SpeichernUnter-Dialog von: Tobias
Geschrieben am: 07.11.2020 11:43:21

Hallo,

ich bin zwar in Word, aber das sollte für das Problem nicht relevant sein.
Ich möchte den "Speichern Unter"-Dialog für ein eigenes Tool nutzen.
Dabei kommt zum Einsatz, dass der Dateityp "*.pro" heißen soll und nicht "*xlsx" oder "*docx"

Aus der OnlineHilfe und Beispielen habe ich folgendes Script:

Dim f As Office.FileDialog
Set f = Application.FileDialog(msoFileDialogSaveAs)

With f
    .Title = "Chord-Pro speichern"            'Fenstertitel
    .AllowMultiSelect = False                 'Nur eine Datei
    .ButtonName = "Speichern"                 'Button Beschriftung
    .Filters.Clear                            'erst alle Filter löschen
    .Filters.Add "Chord-Pro", "*.pro", 1
    .FilterIndex = 2                          'einen Filter vorselektieren
    .InitialFileName = Var_bearbeiten("Pfad", , 2) & txt_title.Text
    .InitialView = msoFileDialogViewDetails
    .Execute
    .Show
End With
Nur ... er bringt einen Fehler bei ".Filters.Clear" und auch bei ".Filters.Add" (egal ob mit "1" oder ohne)

Auch wenn ich den Code so schreibe
 With Application.FileDialog(msoFileDialogSaveAs)
    .Filters.Clear
    .Filters.Add "Chord-pro", "*.pro", 1
    .FilterIndex = 1  'or 2 or 3, etc.
    .Show
    .Execute
End With
kommen dieselben Fehlermeldungen, dass die Methode nicht verfügbar ist - obwohl ich sie aufrufen kann, sobald ich den "." eingebe.

Was mache ich da falsch?
Letztendlich könnte ich auch eine UserForm erstellen, in der nur der Pfad ausgewählt werden kann und über ein Textfeld der Dateiname; gespeichert wird es letztendlich eh über einen Stream (*.pro ist eine Textdatei)

Gruß Tobias

Betrifft: AW: SpeichernUnter-Dialog
von: max.kaffl@gmx.de
Geschrieben am: 07.11.2020 11:56:28

Hallo Tobias,

du kannst nur mit dem msoFileDialogFilePicker einen Filter setzen.

Gruß
Nepumuk

Betrifft: AW: SpeichernUnter-Dialog
von: Tobias
Geschrieben am: 07.11.2020 15:27:22

Ok, sehr interessant.
Dazu zwei Fragen:

a) warum bietet die Intellisence aber die Möglichkeit an, die Eigenschaft zu verändern, wenn es gar nicht funktioniert?
b) ich hab das jetzt versucht zu ändern - das mit dem Filter klappt.
Aber ... ich möchte ja eine Datei speichern (über einen internen Code). Zum einen finde ich irretierend, dass der "ButtonName" erst verändert wird, wenn eine Datei ausgewählt wird. Zum anderen möchte ich ja auch eine NEUE Datei abspeichern können. Wenn ich eine vorhandene Datei auswähle und auf "Speichern" klicke, speichert er das "neue" in der ausgewählten Datei. Wie schaffe ich es aber, dass ich einen Dateinamen eingebe (der eben nicht vorhanden ist) und mein Programm dann unter diesem Namen den Inhalt speichert?

Gruß Tobias

Betrifft: AW: SpeichernUnter-Dialog
von: Nepumuk
Geschrieben am: 07.11.2020 16:05:52

Hallo Tobias,

versuch es damit:

Public Sub Test()
    
    Dim vntFilename As Variant
    
    vntFilename = Application.GetSaveAsFilename(InitialFileName:=Var_bearbeiten("Pfad", , 2) & _
        txt_title.Text, FileFilter:="Chord-Pro (*.pro), *.pro", Title:="Chord-Pro speichern")
    
    If vntFilename <> False Then MsgBox vntFilename
    
End Sub

Gruß
Nepumuk

Betrifft: AW: SpeichernUnter-Dialog
von: Tobias
Geschrieben am: 08.11.2020 00:34:26

Danke für die Info, aber ... GetSaveAsFilename geht in Word nicht (dachte, da ich nur reines VBA nutze, dass es egal ist ob Word oder Excel :-))

Gruß

Betrifft: AW: SpeichernUnter-Dialog
von: Oberschlumpf
Geschrieben am: 08.11.2020 02:41:58

Hi Tobias,

nun weißt du ja, dass xl-vba <> word-vba sein kann.

Ich hab diesen Text "vba word speichern unter" in Google eingegeben.
In 0,35 Sekunden hab ich ungefähr 454.000 Ergebnisse erhalten.

Hilfts?

Ciao
Thorsten

Betrifft: AW: SpeichernUnter-Dialog
von: Tobias
Geschrieben am: 08.11.2020 21:05:59

Hallo Thorsten,

nein, hilft nicht. Oder meinst du, dass ich da nicht selbst schon drauf gekommen bin?
Jedoch bin ich mir nicht sicher, ob du MEINEN Text wirklich durchgelesen hast.
Denn es geht mir NICHT darum ein "Word-Dokument" zu speichern sondern ich möchte unter einem Word-fremden Dateitypen (dennoch grob gesehen eine "txt-Datei", aber eben mit anderer Datei-Endung - s. in meinem Beitrag) speichern.
Das Speichern selbst löse ich über einen internen Code.
Ich möchte das Dialog-Fenster NUR nutzen, damit der Nutzer sagen kann WO und unter welchem NAMEN er das Dokument speichern soll (aber nicht als "doc" oder "txt" sondern eben NUR als "*.pro"-Datei.
Mit dem Dialog "FilePicker" (konstruktiver Beitrag von Nepomuk) habe ich es zumindest hinbekommen, dass ich eine vorhandene Datei "anklicken" kann und dann mit "Speichern" dann auch in der Datei speichere.
Nur wenn ich die Daten (als langer String) in eine noch nicht vorhandene Datei speichern möchte, klappt das eben nicht, da er mir diesen Dateitypen nicht anzeigt, den ich gern hätte angezeigt bekommen.

Wenn du da einen KONKRETEN Link für mich hättest ... ich hab mich schon dusslig gesucht.

Gruß