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

Forumthread: Dateiname automatisch übernehmen aus Zelle

Dateiname automatisch übernehmen aus Zelle
26.05.2007 09:25:49
Tobias
Hallo zusammen!
Kann mir jemand ob und wie es möglich ist, eine bestimmte Zelle so zu formatieren dass die Nummer die dort eingegeben wird, automatisch als Dateiname übernommen wird wenn ich die Tabelle speicher? (auf Diskettensymbol)
Wichtig: Es muss automatisch eine neue Datei angelegt werden, die Änderungen sollen nicht in die Tabelle übernommen werden, die grade bearbeitet wird.
Vielen Dank schon mal im voraus!

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname automatisch übernehmen aus Zelle
26.05.2007 09:40:25
Matthias
Hallo Tobias,
man kann bei Änderung einer Zelle ein Makro starten, das die Datei unter einem anderen Namen speichert. Dann gehen aber die vorher getätigten Änderungen für die Datei, wie sie vorher hieß, verloren.
Willst du das so?
Gruß Matthias

AW: Dateiname automatisch übernehmen aus Zelle
26.05.2007 10:19:00
Tobias
Hallo Matthias!
Bin mir nicht sicher ob wir dasselbe meinen. Deshalb probiere ich es mal genauer zu erkären.
Ich öffne die Datei 1.xlm
Dann ändere ich mehrere Zellen, unter anderem auch die formatierte um die es mir geht.
In der formartierten Zelle wird nun von mir der Wert 12345 hinterlegt.
Nun möchte ich diese Zelle unter dem Namen 12345.xlm speichern.- Nach Möglichkeit jedoch ohne im Dialogfenster der sich öffnet, etwas zu verändern.
Am besten einfach auf dem Diskettensymbol...
Die zuvor geöffnete Darei 1.xlm sollte in ihren Werten aber nicht verändert sein wenn ich sie das nächste mal öffne...
Hmm... auch irgendwie blöd zu lesen... ich hoffe es ist trotzdem verständlich genug :)
Gruß, Tobias

Anzeige
AW: Dateiname automatisch übernehmen aus Zelle
26.05.2007 10:37:00
Matthias
Hallo Tobias,
teste mal dieses:
in DieseArbeitsmappe:

Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim aw
If ThisWorkbook.Saved Then Exit Sub
aw = MsgBox("Änderungen speichern?", vbYesNoCancel)
Select Case aw
Case vbYes: SpeichernUnter
Case vbNo: ThisWorkbook.Saved = True
Case vbCancel: Cancel = True
End Select
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then MsgBox "Dateiauswahl deaktiviert! Dateiname wird automatisch vergeben."
Cancel = True
SpeichernUnter
End Sub
Private Sub SpeichernUnter()
Application.EnableEvents = False
Application.DisplayAlerts = False
' ###### in der folgenden Zeile wird der Dateiname bestimmt (Tabelle1!A1), b.B. anpassen! ###
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Worksheets("Tabelle1").Range("A1") & ". _
xlm"
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub


Achtung, durch das Application.DisplayAlerts = False wird die Warnung, dass eine vorhandene Datei überschrieben wird, unterdrückt.
Gruß Matthias

Anzeige
AW: Dateiname automatisch übernehmen aus Zelle
26.05.2007 11:09:00
Matthias
Hallo Tobias,
ich habe die SpeichernUnter-Prozedur noch geändert, damit man keine unerlaubten Zeichen eingeben kann bzw. nicht durch Eingabe von ../../ das Verzeichnis wechseln kann:

Private Sub SpeichernUnter()
Dim fn As String
'Dateiname ermitteln und prüfen:
fn = Worksheets("Tabelle1").Range("A1")
If Trim(fn) = "" Or _
InStr(fn, ".") > 0 Or _
InStr(fn, "\") > 0 Or _
InStr(fn, "/") > 0 Or _
InStr(fn, " 0 Or _
InStr(fn, ">") > 0 Or _
InStr(fn, "[") > 0 Or _
InStr(fn, "]") > 0 Or _
InStr(fn, ":") > 0 Or _
InStr(fn, "|") > 0 Or _
InStr(fn, "*") > 0 Or _
InStr(fn, "?") > 0 Then
MsgBox "Unzulässiger Dateiname!" & vbLf & "Datei wurde nicht gespeichert!", vbCritical
Exit Sub
End If
Application.EnableEvents = False
Application.DisplayAlerts = False
On Error Resume Next
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & fn & ".xlm"
If Err.Number > 0 Then MsgBox Err.Description, vbCritical, "Fehler " & Err.Number
On Error GoTo 0
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub


Gruß Matthias

Anzeige
AW: Dateiname automatisch übernehmen aus Zelle
26.05.2007 14:25:45
Tobias
Okay vielen Dank!
Kann es heute leider nicht mehr testen, da ich nihct mehr in der Firma bin.
Melde mich nochmal! :)
Tobias

AW: Dateiname automatisch übernehmen aus Zelle
26.05.2007 14:52:07
Tobias
Hallo ich nochmal ;-)
Habs grade hier zu Hause nochmal an einer anderen Arbeitsmappe gestestet. Glaube das ist alles schon etwas zu lange her.
Wärst du bitte so nett und sagst mir nochmal genau wo ich den Code eingeben muss? (ALT und F11, ist doch eigentlich richtig?- Rein kopieren und speichern?) Aber wo bekomme ich den Bezug zu genau der Zelle, aus der der Wert für den Dateinamen übernommen wird? Kann in dem Code keinen Bezug zu einer bestimmten Zelle sehen (in meinem Fall B12, aber ist ja auch wurscht)
Tobias

Anzeige
AW: Dateiname automatisch übernehmen aus Zelle
26.05.2007 16:22:40
Matthias
Hallo Tobias,
in der Prozedur SpeichernUnter() ist diese Zeile zu finden:

fn = Worksheets("Tabelle1").Range("A1")


das musst du anpassen.
Gruß Matthias

AW: Dateiname automatisch übernehmen aus Zelle
26.05.2007 17:02:55
Tobias
Oh stimmt, sorry hab ich übersehen. Also wenn ich jetzt ALT+F11 drücke und dort den Code reinkopiere sollte die Funktion doch in Zelle gleich funktionieren, oder? Ich glaub ich mache etwas falsch denn bisher passiert da nix... Wenn ich einen Wert in die Zelle eingebe und speichere, bleibt der Dateiname immer gleich...
Tobias

Anzeige
AW: Dateiname automatisch übernehmen aus Zelle
26.05.2007 17:04:39
Matthias
Hi Tobias,
du musst den Code in "DieseArbeitsmappe" setzen.
Also Doppelklick links im Projektexplorer auf "DieseArbeitsmappe", dann rechts den Code reinkopieren.
Gruß Matthias

AW: Dateiname automatisch übernehmen aus Zelle
29.05.2007 06:34:00
Tobias
Habe etwas länger gebraucht, aber es hat alles geklappt!
Vielen Dank für die Hilfe!
Gruß, TobiaS
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dateiname automatisch aus Zelle übernehmen


Schritt-für-Schritt-Anleitung

Um den Dateinamen automatisch aus einer bestimmten Zelle in Excel zu übernehmen, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne die Excel-Datei: Stelle sicher, dass die Datei, in der du arbeiten möchtest, geöffnet ist.

  2. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Finde „DieseArbeitsmappe“: Im Projekt-Explorer auf der linken Seite, suche nach „DieseArbeitsmappe“ und doppelklicke darauf.

  4. Füge den Code ein: Kopiere den folgenden VBA-Code und füge ihn in das Editorfenster ein:

    Option Explicit
    
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
       If SaveAsUI Then MsgBox "Dateiauswahl deaktiviert! Dateiname wird automatisch vergeben."
       Cancel = True
       SpeichernUnter
    End Sub
    
    Private Sub SpeichernUnter()
       Dim fn As String
       fn = Worksheets("Tabelle1").Range("A1") ' Hier die Zelle anpassen
       If Trim(fn) = "" Then
           MsgBox "Unzulässiger Dateiname!", vbCritical
           Exit Sub
       End If
       Application.EnableEvents = False
       ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & fn & ".xlm"
       Application.EnableEvents = True
    End Sub
  5. Zelle anpassen: Ändere Worksheets("Tabelle1").Range("A1") auf die Zelle, aus der der Dateiname übernommen werden soll, zum Beispiel Worksheets("Tabelle1").Range("B12").

  6. Speichern und Schließen: Schließe den VBA-Editor und speichere die Excel-Datei als Makro-fähige Arbeitsmappe (*.xlsm).

  7. Testen: Ändere den Wert in der angegebenen Zelle und speichere die Datei. Der Dateiname sollte jetzt automatisch übernommen werden.


Häufige Fehler und Lösungen

  • Fehler: „Dateiname ungültig“: Dies passiert, wenn der Wert in der Zelle ungültige Zeichen enthält. Stelle sicher, dass der Inhalt der Zelle keine der folgenden Zeichen enthält: \ / : * ? " < > |

  • Problem: Die Datei wird nicht gespeichert: Überprüfe, ob das Makro in „DieseArbeitsmappe“ eingefügt wurde und ob der Name der Arbeitsblatt korrekt ist.

  • Änderungen werden nicht übernommen: Vergewissere dich, dass du die Datei als Makro-fähige Arbeitsmappe gespeichert hast.


Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch die Funktion „Speichern unter“ manuell nutzen und den Dateinamen von der Zelle ablesen. Dies ist jedoch nicht automatisiert und erfordert mehr Aufwand.


Praktische Beispiele

  • Beispiel 1: Wenn in der Zelle B12 der Wert „12345“ steht, wird beim Speichern die Datei als „12345.xlm“ gespeichert.

  • Beispiel 2: Du kannst den Code so anpassen, dass er mehrere Zellen prüft und den Dateinamen aus einer Kombination von Zellen generiert. Zum Beispiel fn = Worksheets("Tabelle1").Range("B12") & "_" & Worksheets("Tabelle1").Range("C12").


Tipps für Profis

  • Verwende die Funktion Application.DisplayAlerts = False, um Warnmeldungen beim Überschreiben vorhandener Dateien zu deaktivieren, aber sei vorsichtig, dies kann dazu führen, dass ungewollt Daten verloren gehen.

  • Du kannst das Makro so anpassen, dass es auch andere Aktionen ausführt, wie das Senden einer E-Mail mit dem neuen Dateinamen oder das Speichern in einem bestimmten Ordner.


FAQ: Häufige Fragen

1. Wo genau muss ich den Code einfügen?
Du musst den Code in „DieseArbeitsmappe“ im VBA-Editor einfügen.

2. Wie kann ich die Zelle ändern, aus der der Dateiname übernommen wird?
Ändere die Zeile fn = Worksheets("Tabelle1").Range("A1") auf die gewünschte Zelle, z.B. Range("B12").

3. Funktioniert das in allen Excel-Versionen?
Ja, dieses VBA-Skript sollte in Excel-Versionen ab 2007 funktionieren, solange die Datei als Makro-fähig gespeichert wird.

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