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

Forumthread: Datei speichern - VBA

Datei speichern - VBA
29.07.2004 14:26:51
Hendrik
Moin,
folgender Code will nicht so recht und ich hab keine Ahnung warum:

Sub Speichern()
Dim Dateiname As String
Dateiname = Application.InputBox(prompt:="Bitte Dateinamen eingeben:")
If Dateiname = False Then
Application.DisplayAlert = False
ActiveWorkbook.Close
Else
ActiveWorkbook.SaveAs Filename:="G:\" & Dateiname
ActiveWorkbook.Close
End If
Application.DisplayAlerts = True
End Sub

Er soll nach nem Dateinamen fragen (tut er), bei Klick auf Abbrechen soll er die Datei meldungslos schliessen (tut er nich), Bei Klick auf OK unter dem angegebenem Dateinamen speichern (tut er auch nich).
Ich steh auf dem Schlauch...!?!!!
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei speichern - VBA
harry
hi,
so funkt es bei mir:

Sub Speichern()
Dim Dateiname As String
Dateiname = Application.InputBox(prompt:="Bitte Dateinamen eingeben:")
If Dateiname = "" Then
Application.DisplayAlerts = False
ActiveWorkbook.Close
Else
ActiveWorkbook.SaveAs Filename:="G:\" & Dateiname
ActiveWorkbook.Close
End If
Application.DisplayAlerts = True
End Sub

du hattest 2 fehler:
dateiname = string kann daher nicht auf false gesetzt werden
Application.DisplayAlert = False gibts nicht, heißt: Application.DisplayAlerts = False
liebe grüße,
harry
Anzeige
AW: Datei speichern - VBA
29.07.2004 14:54:03
Philipp
Hallo
Harrys Lösung und Hinweise sind korrekt.
Anstelle von
If Dateiname = "" Then
sollte man jedoch
If Trim$(Dateiname) = "" or Dateiname = "Falsch" Then
verwenden, falls der User einfach ein Leerzeichen eingibt und dann OK klickt oder auf Abbrechen klickt.
Gruss
Philipp
¦¦¦ xlam - Excel and more!
¦¦¦ http://195.186.84.74/index.htm
Anzeige
AW: Datei speichern - VBA
Udo
Das reicht ja auch nicht, es muss auch geprüft werden, ob in Dateinamen verbotene Zeichen
enthalten sind!
Udo
AW: Datei speichern - VBA
29.07.2004 15:11:33
Uwe
Hallo Zusammen,
dann vielleicht auf die harte Tour:

Sub Speichern()
Dim Dateiname As String
Dateiname = Trim(Application.InputBox(prompt:="Bitte Dateinamen eingeben:"))
Select Case Dateiname
Case "", False
ActiveWorkbook.Close SaveChanges:=False
Case Else
On Error GoTo NameUngueltig
ActiveWorkbook.Close Filename:="G:\" & Dateiname
End Select
Exit Sub
NameUngueltig:
MsgBox "Der Dateiname enthält ungültige Zeichen!"
End Sub
Gruß Uwe
Anzeige
AW: Datei speichern - VBA
Udo
Hart aber dafür programmiertechnisch nicht gut.
Udo
AW: Datei speichern - VBA
29.07.2004 15:35:33
Philipp
Wenn wir gerade schon dabei sind... ;-)
Die Fehlermeldung sollte nicht "Der Dateiname enthält ungültige Zeichen!" lauten, da abgesehen von ungültigen Zeichen was anderes faul sein kann. Beispielsweise Festplatte voll, keine Schreibrechte, Datei existiert bereits und ist von einem anderen User/Prozess geöffnet, Laufwerk nicht verfügbar, Datenträger nicht eingelegt, Gerät nicht bereit, Pfad ungültig, Dateiname zu lang usw.
Ausserdem muss vor "ActiveWorkbook.Close Filename:=..." die Anweisung "Application.DisplayAlerts = False" eingefügt werden, sonst erscheint die Excel-Rückfrage "Änderungen speichern?".
Abgesehen davon: Was macht der User, wenn er die InputBox vor sich hat und weder speichern noch schliessen möchte?
Gruss
Philipp
¦¦¦ xlam - Excel and more!
¦¦¦ http://195.186.84.74/index.htm
Anzeige
AW: Datei speichern - VBA
Udo
Du hast ja so Recht.
Udo
Danke Harry!!! oT
Hendrik
.
AW: Datei speichern - VBA
harry
so funkts einwandfrei:
Dim Dateiname As String

Dateiname = InputBox(prompt:="Bitte Dateinamen eingeben:")
If Dateiname = "" Then
Application.DisplayAlerts = False
ActiveWorkbook.Close
Else
ActiveWorkbook.SaveAs Filename:="c:\" & Dateiname
ActiveWorkbook.Close
End If
Application.DisplayAlerts = True
statt application.inputbox nur inputbox
liebe grüße,
harry
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datei speichern mit VBA in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code ein:
Sub Speichern()
    Dim Dateiname As String
    Dateiname = Application.InputBox(prompt:="Bitte Dateinamen eingeben:")
    If Trim(Dateiname) = "" Then
        Application.DisplayAlerts = False
        ActiveWorkbook.Close SaveChanges:=False
    Else
        On Error GoTo Fehler
        ActiveWorkbook.SaveAs Filename:="G:\" & Dateiname
        ActiveWorkbook.Close
    End If
    Application.DisplayAlerts = True
    Exit Sub

Fehler:
    MsgBox "Der Dateiname enthält ungültige Zeichen oder die Datei kann nicht gespeichert werden!"
End Sub
  1. Ändere den Pfad in ActiveWorkbook.SaveAs Filename:="G:\" & Dateiname entsprechend deinem gewünschten Speicherort.
  2. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Problem: Das Makro schließt Excel ohne zu speichern.

    • Lösung: Stelle sicher, dass die Abfrage auf Trim(Dateiname) = "" überprüft wird, um auch Leerzeichen zu berücksichtigen.
  • Problem: Fehlermeldung beim Speichern.

    • Lösung: Füge eine Fehlerbehandlungsroutine hinzu, die ungültige Dateinamen erkennt und dem Benutzer eine entsprechende Nachricht zeigt.

Alternative Methoden

  • Direktes Speichern: Du kannst auch die Save-Methode verwenden, um die Arbeitsmappe an ihrem aktuellen Speicherort zu speichern. Hier ein Beispiel:
Sub DirektSpeichern()
    On Error Resume Next
    ActiveWorkbook.Save
    If Err.Number <> 0 Then
        MsgBox "Fehler beim Speichern der Datei."
    End If
    On Error GoTo 0
End Sub
  • Speichern unter: Verwende ActiveWorkbook.SaveCopyAs, um eine Kopie der Arbeitsmappe unter einem neuen Namen zu speichern, ohne die aktuelle Arbeitsmappe zu schließen.

Praktische Beispiele

  1. Einfaches Speichern unter einem festgelegten Namen:
Sub SpeichernUnterFestemNamen()
    ActiveWorkbook.SaveAs Filename:="G:\MeinExcelDokument.xlsx"
End Sub
  1. Speichern mit Benutzerabfrage:
Sub SpeichernMitBenutzereingabe()
    Dim Dateiname As String
    Dateiname = InputBox("Gib den neuen Dateinamen ein:")
    If Dateiname <> "" Then
        ActiveWorkbook.SaveAs Filename:="G:\" & Dateiname
    End If
End Sub

Tipps für Profis

  • Nutze die Application.DisplayAlerts = False-Anweisung, um Rückfragen beim Schließen oder Speichern der Arbeitsmappe zu unterdrücken.
  • Verwende On Error GoTo, um spezifische Fehlerbehandlungen für verschiedene Fehlercodes zu implementieren.
  • Überprüfe Eingaben auf verbotene Zeichen für Dateinamen, wie \ / : * ? " < > |.

FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Datei mit VBA speichern?
Du kannst eine Excel-Datei mit dem Befehl ActiveWorkbook.SaveAs speichern. Achte darauf, dass du den richtigen Dateinamen und Pfad angibst.

2. Was passiert, wenn ich einen ungültigen Dateinamen eingebe?
Das VBA-Skript sollte eine Fehlermeldung anzeigen, wenn der Dateiname ungültige Zeichen enthält oder wenn das Speichern aus anderen Gründen nicht möglich ist.

3. Kann ich das Makro so anpassen, dass es automatisch einen Dateinamen generiert?
Ja, du kannst den Dateinamen im Code dynamisch festlegen, zum Beispiel basierend auf dem aktuellen Datum oder der Uhrzeit.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige