Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datei automatisch speichern nach Eingabe

Datei automatisch speichern nach Eingabe
29.04.2009 13:13:57
Franz
Hallo zusammen,
habe folgendes Problem:
über eine Vorlage (XLT) wird ein neues Arbeitsblatt erstellt. In 2 Zellen (D7 und B13) sollen Kundennummer und Reparaturnummer eingetragen werden. Auf dem Blatt gibt es einen Button der die Datei dann speichert und zwar in der Form: Kundennummer_Reparaturnummer.xls. Wenn der Anwender jedoch VOR diesem Speichern auf "Schliessen" klickt, kommt die Abfrage, ob die Änderungen gespeichert werden sollen. Wird dann "Nein" ausgewählt, ist dieses Arbeitsblatt natürlich "gelöscht", also nicht gespeichert und alle Eintragungen weg. Schön wäre es, wenn das Speichern automatisch nach Eingabe der Werte (und nur dann!) in B13 und D7 erfolgt. Allerdings sollte das Arbeitsblatt auch "verworfen" werden können, also Schliessen ohne Änderungen zu speichern (siehe oben), weil nichts eingetragen wurde und Excel geschlossen werden soll (zum Feierabend). Hoffe, ich habe mich einigermaßen verständlich ausgedrückt. Einige Experiment mit beforeclose und beforsafe habe ich auch schon gemacht, aber der gewünschte Erfolg hat sich nicht eingestellt.
Danke schonmal im voraus, Franz
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei automatisch speichern nach Eingabe
29.04.2009 15:28:32
fcs
Hallo Namensvetter,
eines der folgende Ereignismakros, dass die Eingabe in den beiden Zellen überwacht sollte es tun.
Das Makro muss du im VBA-Editor unter der Tabelle der Vorlagedatei einfügen.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
'Speichern mit Anzeige des Speichern-Unter-Dialogs
Dim Pfad As String, strDatei As String
Pfad = "C:\Lokale Daten\Test" 'Start-Verzeichnis für Dateien
'Eingabezellen überwachen auf Änderungen
If Target.Address = "$D$7" Or Target.Address = "$B$13" Then
'D7 : Kundennummer
'B13: Reparaturnummer
'Prüfen, ob beiden Zellen mit Inhalt
If Not IsEmpty(Range("D7")) And Not IsEmpty(Range("B13")) Then
'Dateiname aus Zellinhalten erzeugen
strDatei = Range("D7") & "_" & Range("B13") & ".xls"
'Vollständiger Dateiname
strDatei = Pfad & "\" & Range("D7") & "_" & Range("B13") & ".xls"
'Datei speichern unter
Application.Dialogs(xlDialogSaveAs).Show strDatei
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
'Speichern in einem fest vorgegebenen Verzeichnis
Dim Pfad As String, strDatei As String
Pfad = "C:\Lokale Daten\Test" 'Verzeichnis für Dateien
'Eingabezellen überwachen auf Änderungen
If Target.Address = "$D$7" Or Target.Address = "$B$13" Then
'D7 : Kundennummer
'B13: Reparaturnummer
'Prüfen, ob beiden Zellen mit Inhalt
If Not IsEmpty(Range("D7")) And Not IsEmpty(Range("B13")) Then
'Dateiname aus Zellinhalten erzeugen
strDatei = Range("D7") & "_" & Range("B13") & ".xls"
'nach Bestätigung Datei speichern
If MsgBox(Prompt:="Datei jetzt speichern!" & vbLf & vbLf _
& "Verzeichnis: " & Pfad & vbLf _
& "Dateiname: " & strDatei, _
Buttons:=vbQuestion + vbOKCancel, _
Title:="Datei Speichern") = vbOK Then
'Vollständiger Dateiname
strDatei = Pfad & "\" & Range("D7") & "_" & Range("B13") & ".xls"
'Datei speichenr
ActiveWorkbook.SaveAs Filename:=strDatei, FileFormat:=xlWorkbook, addtomru:=True
End If
End If
End If
End Sub


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Speichern von Excel-Dateien nach Eingabe


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle das entsprechende Arbeitsblatt:

    • Doppelklicke auf das Arbeitsblatt, in dem die Eingaben erfolgen sollen (z. B. Tabelle1).
  3. Füge das Makro ein:

    • Kopiere den folgenden Code und füge ihn in das Codefenster ein:
    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim Pfad As String, strDatei As String
       Pfad = "C:\Lokale Daten\Test" ' Start-Verzeichnis für Dateien
    
       If Target.Address = "$D$7" Or Target.Address = "$B$13" Then
           If Not IsEmpty(Range("D7")) And Not IsEmpty(Range("B13")) Then
               strDatei = Pfad & "\" & Range("D7") & "_" & Range("B13") & ".xls"
               Application.Dialogs(xlDialogSaveAs).Show strDatei
           End If
       End If
    End Sub
  4. Speichere das Makro:

    • Schließe den VBA-Editor und speichere deine Excel-Vorlage als Excel-Arbeitsmappe mit Makros (*.xlsm).
  5. Teste das Makro:

    • Gib Werte in die Zellen D7 (Kundennummer) und B13 (Reparaturnummer) ein. Die Datei sollte automatisch gespeichert werden.

Häufige Fehler und Lösungen

  • Fehler: Makro funktioniert nicht
    Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind. Überprüfe auch, dass Du den Code im richtigen Arbeitsblatt eingefügt hast.

  • Fehler: Datei wird nicht gespeichert
    Lösung: Überprüfe den Pfad im Code. Stelle sicher, dass der Ordner existiert und Du Schreibrechte hast.

  • Fehler: Speichern-Dialog erscheint nicht
    Lösung: Prüfe, ob Du in den Zellen D7 und B13 wirklich Werte eingegeben hast, bevor Du das Makro testest.


Alternative Methoden

Wenn Du eine andere Methode zur Automatisierung des Speicherns ausprobieren möchtest, kannst Du die Workbook_BeforeClose-Ereignisprozedur in das DieseArbeitsmappe-Modul einfügen. Hier ein Beispiel:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim strDatei As String
    If Not IsEmpty(Sheets("Tabelle1").Range("D7")) And Not IsEmpty(Sheets("Tabelle1").Range("B13")) Then
        strDatei = "C:\Lokale Daten\Test\" & Sheets("Tabelle1").Range("D7") & "_" & Sheets("Tabelle1").Range("B13") & ".xls"
        ActiveWorkbook.SaveAs Filename:=strDatei, FileFormat:=xlWorkbook, addtomru:=True
    End If
End Sub

Praktische Beispiele

  • Beispiel 1: Kundennummer = 12345 und Reparaturnummer = 67890
    Die Datei wird als 12345_67890.xls im angegebenen Verzeichnis gespeichert.

  • Beispiel 2: Kundennummer = 54321 und Reparaturnummer = 09876
    Die Datei wird als 54321_09876.xls gespeichert.

Diese automatischen Speicherfunktionen sind besonders nützlich, wenn Du oft mit ähnlichen Daten arbeitest und sicherstellen möchtest, dass nichts verloren geht.


Tipps für Profis

  • Verwende absolute Pfade: Stelle sicher, dass der Pfad zu einem existierenden Verzeichnis führt, um Fehler zu vermeiden.

  • Ergänze Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um potenzielle Probleme beim Speichern abzufangen.

  • Nutze benutzerdefinierte Dateinamen: Du kannst den Dateinamen dynamisch gestalten, indem Du zusätzliche Informationen wie das aktuelle Datum einfügst.


FAQ: Häufige Fragen

1. Frage
Wie kann ich das Makro anpassen, um auch andere Zellen zu überwachen?
Antwort: Füge einfach weitere Bedingungen im If Target.Address-Block hinzu, um zusätzliche Zellen zu überwachen.

2. Frage
Was mache ich, wenn ich Excel ohne Speichern schließen möchte?
Antwort: Du kannst das Schließen der Datei mit Workbook_BeforeClose steuern, indem Du die Abfrage einfügst, ob Änderungen gespeichert werden sollen.

3. Frage
Ist dieses Makro in allen Excel-Versionen anwendbar?
Antwort: Ja, das Makro sollte in den meisten modernen Versionen von Excel (ab Excel 2007) funktionieren.

Mit diesen Anleitungen und Tipps bist Du gut gerüstet, um das automatische Speichern in Excel nach Eingabe zu nutzen. Viel Erfolg!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige