Microsoft Excel

Herbers Excel/VBA-Archiv

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

"Speichern unter" mit VBA für eigene Files


Betrifft: "Speichern unter" mit VBA für eigene Files von: Werner Perouse
Geschrieben am: 24.09.2019 09:23:58

Hallo Forum,

ich erzeuge mit Hilfe von VBA neue Files, möchte aber innerhalb meines VBA-Codes weder den Namen noch den Speicherort vorgeben; das möchte ich dem Anwender überlassen.

Meine Frage: wo kann ich den dafür notwendigen VBA-Code finden? Schön - aber nicht unbedingt zwingend - wäre, wenn ich noch den Namen der Erweiterung (z. B. ".CSV") vorgeben könnte.

Gruß

Werner

  

Betrifft: AW: "Speichern unter" mit VBA für eigene Files von: Daniel
Geschrieben am: 24.09.2019 09:36:41

Hi

Den Macrocode kannst du finden, indem du das Speichern unter von Hand ausführst und dabei den Macrorecorder mitlaufen lässt.
Im aufgezeichneten Code siehst du dann wie es prinzipiell funktioniert und kannst von dort auch mit F1 direkt in die Hilfeseiten aufrufen.
Die Dateierweiterung solltest du nicht selbst vorgeben, diese erzeugt Excel automatisch in Abhängigkeit vom gewählten Dateityp.
Damit ist sichergestellt, dass sie korrekt ist.

Gruß Daniel


  

Betrifft: vergiss dass von: Daniel
Geschrieben am: 24.09.2019 12:04:05

das ist für den anderen Fall, wenn du Speichernamen explizit vorgeben willst, ohne dass der Anwender was auswählen darf.
Gruß Daniel


  

Betrifft: AW: "Speichern unter" mit VBA für eigene Files von: Werner Perouse
Geschrieben am: 24.09.2019 12:33:36

Hallo Daniel,

Deinen Vorschlag habe ich ausgeführt; hier das Ergebnis, welches der Macrorecorder aufgezeichnet hat:

Sub Makro1()
'
' Makro1 Makro
'

'
    ChDir "C:\Users\Werner\Downloads"
    ActiveWorkbook.SaveAs Filename:="C:\Users\Werner\Downloads\xxx2.xlsm", _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub


Wo soll ich hier angeben, welche Daten ich speichern möchte? Was hier gespeichert wird, ist meine Excel-File, und nicht die von mir erstellten Daten.

Trotzdem: Danke für Deine Antwort


  

Betrifft: AW: "Speichern unter" mit VBA für eigene Files von: Nepumuk
Geschrieben am: 24.09.2019 11:02:31

Hallo Werner,

teste mal:

Public Sub Beispiel()
    Dim objFileDialog As FileDialog
    Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
    With objFileDialog
        .FilterIndex = 15
        If .Show Then
            Application.DisplayAlerts = False
            Call .Execute
            Application.DisplayAlerts = True
        End If
    End With
    Set objFileDialog = Nothing
End Sub

Gruß
Nepumuk


  

Betrifft: AW: "Speichern unter" mit VBA für eigene Files von: Werner Perouse
Geschrieben am: 24.09.2019 12:48:35

Hallo Nepumuk,

auch Dir "Danke" für Deinen Code. Leider ist der Code nur dazu geeignet, den Inhalt meiner Excel-Tabelle zu speichern.

Wenn ich in meiner ersten Beschreibung als Beispiel ".CSV" genannt hatte, dachte ich nicht daran, den Inhalt einer Excel-Tabelle als CSV-File zu speichern. Ich generiere Code (mit Sonderzeichen), welche ich dann in eine neue File "irgendwo" auf meinem Rechner speichern möchte. Ort und Name soll der Anwender im entsprechenden Dialog selbst festlegen.

Ich hoffe, mein Anliegen ist etwas verständlicher geworden.

In anderen Projekten habe ich das bisher wie folgt gelöst:

Open NewFile For Output As #1

Print #1, "Daten1"
Print #1," Daten2"

Close #1


Zuvor muss ich allerdings Pfad und Name der neuen File festlegen, ggf. auch die Erweiterung. Und hier dachte ich an den Speicher-unter-Dialog.


Gruß

Werner


  

Betrifft: AW: "Speichern unter" mit VBA für eigene Files von: Daniel
Geschrieben am: 24.09.2019 12:55:07

Hi
in dem Fall schau dir mal Application.GetSaveAsFilename an.
damit öffnet sich der FileDialog und Verzeichnis und Name der ausgewählten Datei werden in einen String geschrieben, mit welchem du dann weiter arbeiten kannst.

dim SpeicherName as String
SpeicherName = Application.GetSaveAsFilename
Msgbox SpeicherName
Gruß Daniel


  

Betrifft: AW: "Speichern unter" mit VBA für eigene Files von: Werner Perouse
Geschrieben am: 24.09.2019 13:08:04

Hallo Daniel,

SUPER!

Genau das habe ich gesucht.

Bei meinem Test wurde mir als Speichername zurückgegben: C:\Users\Werner\Downloads\xxxx.txt

Danke. Problem erfolgreich gelöst.

Gruß

Werner


  

Betrifft: AW: "Speichern unter" mit VBA für eigene Files von: Werner Perouse
Geschrieben am: 24.09.2019 19:30:39

Hallo Excel-Freunde,

als "Dankeschön" dafür, dass mir schon mehrfach in diesem Forum geholfen wurde, habe ich eine kleine Demo-Version mit "Application.GetSaveAsFilename" zusammengestellt. In dem Code nutze ich auch "IniRead" und "IniWrite", um den ausgewählten Speicherort beim nächsten Aufruf wieder zu haben; mehr Informationen dazu im Code.

Den Beispiel-Code findet ihr hier: https://www.herber.de/bbs/user/132171.txt

Gruß

Werner


  

Betrifft: AW: "Speichern unter" mit VBA für eigene Files von: Nepumuk
Geschrieben am: 24.09.2019 12:56:52

Hallo Werner,

so besser?

Public Sub Beispiel()
    Dim objFileDialog As FileDialog
    Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
    With objFileDialog
        .FilterIndex = 12
        If .Show Then
            MsgBox .SelectedItems(1)
        Else
            MsgBox "Abgebrochen"
        End If
    End With
    Set objFileDialog = Nothing
End Sub

Gruß
Nepumuk


  

Betrifft: AW: "Speichern unter" mit VBA für eigene Files von: Werner Perouse
Geschrieben am: 24.09.2019 13:14:53

Hallo Nepumuk,

Danke für die Erweiterung Deines Codes. Ergebnis: es funktioniert und liefert das gewünschte Ergebnis. Aber: der von Daniel vorgeschlagene Code ist um einiges kürzer; ich werde dessen Code verwenden, würde mich aber freuen, auch zukünftig von Dir Antworten zu erhalten.

Gruß

Werner


Beiträge aus dem Excel-Forum zum Thema ""Speichern unter" mit VBA für eigene Files"