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

Forumthread: VBA Dateiname aus Zelle generieren und Speichern

VBA Dateiname aus Zelle generieren und Speichern
31.01.2019 13:27:31
Tobias
Hallo zusammen,
ich bin auf der Suche nach einem Makro oder alternativ Makro+normale Excel-Funktion.
Ich habe eine Vorlage namens "FA+SN.xltm" (auf Laufwerk O:\)
in dieser Vorlage steht am Ende der Bearbeitung in der Zelle "S11" die Projektnummer (diese ist immer acht-stellig).
Diese möchte ich nun in einem bestimmten Verzeichnis speichern (natürlich als .xlsm - also keine Vorlage mehr).
Das Verzeichnis in welches gespeichert werden soll liegt auf dem Server
"I:\-- Aktuelle Projekte\" und beginnt immer mit der jeweiligen Projektnummer.
Ich möchte also die Vorlage "FA+SN.xltm" in den Ordner (Beispiel)
"I:\-- Aktuelle Projekte\12345678 Kunde Projekt" abspeichern,
wobei 12345678 dem Wert in Zelle "S11" entsprechen soll. (Projektnummer)
Der neue Dateiname der soll außerdem so aussehen: "FASN - 12345678.xlsm"
Meine Idee: (Achtung, ganz simpel)
Funktion:
Suche in Pfad "I:\-- Aktuelle Projekte\" den Ordner, dessen erste 8 Zeichen mit dem Wert in "S11" übereinstimmen.
Schreibe diesen Pfad in Zelle "W11"
Dann Makro ausführen (mit Button):
Speichere das ActiveWorkbook in den Pfad aus "W11" unter dem Dateinamen "FASN -" & Range("S11") & ".xlsm"
....
wie geht das?
Danke schon mal für eure Hilfe :)
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Dateiname aus Zelle generieren und Speichern
31.01.2019 13:36:09
Rudi
Hallo,
ist sicher gestellt, dass es den Ordner gibt?
activeworkbook.saveas "I:\-- Aktuelle Projekte\" &s11 &"\FASN-" &Range("S11"), xlOpenXMLWorkbookMacroEnabled
Gruß
Rudi
AW: VBA Dateiname aus Zelle generieren und Speichern
31.01.2019 13:53:33
Tobias
Hi Rudi,
danke erstmal für die schnelle Antwort.
Bisher scheint dein Code das zu tun was ich will - nur nicht ganz.
Die Datei wurde jetzt in dem Verzeichnis "I:\-- Aktuelle Projekte\" gespeichert und hat den Namen "FASN-45550119".
Ich werde jetzt mal etwas konkreter.
Ich teste mit der Projektnummer 45550119 (= der Wert in Zelle S11)
Das Verzeichnis, in welches gespeichert werden soll, existiert.
Dieses ist: "I:\-- Aktuelle Projekte\45550119 (ETS Lindgren Finnland) 6P00000897 (Orange)_FSM2320, CO3000-1D"
also nehme ich an, dass mit dem teil \" &s11 &"\ irgendwas nicht stimmt? - keine Ahnung...
Anzeige
AW: VBA Dateiname aus Zelle generieren und Speichern
31.01.2019 14:00:55
Rudi
aha!
sPfad=Dir("I:\-- Aktuelle Projekte\" &s11 &"*", vbDirectory)
If sPfad "" then
Activeworkbook.SaveAs sPfad &"\" &s11 &"\FASN-" &Range("S11"), xlOpenXMLWorkbookMacroEnabled
Else
Msgbox "Ordner nicht vorhanden."
End If

Gruß
Rudi
Anzeige
Quatsch!
31.01.2019 14:02:33
Rudi
2x Range vergessen.
sPfad=Dir("I:\-- Aktuelle Projekte\" &Range("s11") &"*", vbDirectory)
If sPfad "" then
Activeworkbook.SaveAs sPfad &"\" &Range("s11") &"\FASN-" &Range("S11"),  _
xlOpenXMLWorkbookMacroEnabled
Else
Msgbox "Ordner nicht vorhanden."
End If

Anzeige
AW: Quatsch!
31.01.2019 14:12:13
Tobias
bekomme folgende Fehlermeldung
Userbild
dann prüfe das. owT
31.01.2019 14:19:23
Rudi
AW: dann prüfe das. owT
31.01.2019 14:35:37
Tobias
Naja ich dachte, dass mit dem code
sPfad = Dir("I:\-- Aktuelle Projekte\" & Range("s11") & "*", vbDirectory)
Der Speicherpfad angegeben wird.
Aber der will ja Auf C:\.... speichern - da gibt´s den Ordner natürlich nicht.
Außerdem soll der die Datei direkt in ..\45550119 (ETS Lindgren Finnland) 6P00000897 (Orange)_FSM2320, CO3000-1D speichern.
Die Fehlermeldung zeigt mir doch, dass er in ..\45550119 (ETS Lindgren Finnland) 6P00000897 (Orange)_FSM2320, CO3000-1D\45550119\E6846100 speichern will ...
mal abgesehen von den davor stehenden Pfadangaben (C:...)
Vielleicht sollte es ja so heißen:?
ActiveWorkbook.SaveAs sPfad & "FASN-" & Range("S11"),

Anzeige
AW: Quatsch!
31.01.2019 14:50:39
PeterK
Hallo
DIR liefert keine Laufwerksbuchstaben!
Activeworkbook.SaveAs "I:\" & sPfad &"\FASN-" &Range("S11"), xlOpenXMLWorkbookMacroEnabled
AW: Quatsch!
31.01.2019 15:03:20
Tobias
... ja genau...
hab´s selbst rausgefunden:
Da die Vorlage auf O:\ liegt und ich mit Excel (temporär) auf C:\ arbeite, muss man dem sagen,
dass er das Laufwerk auf I:\ und das Verzeichnis auf I:\-- Aktuelle Projekte\ wechselt.
Sieht dann so aus und funktioniert:

Sub Speichern_unter()
ChDrive "I"
ChDir "I:\-- Aktuelle Projekte\"
sPfad = Dir("I:\-- Aktuelle Projekte\" & Range("s11") & "*", vbDirectory)
If sPfad  "" Then
ActiveWorkbook.SaveAs sPfad & "\" & "FASN-" & Range("S11")
Else
MsgBox "Ordner nicht vorhanden."
End If
End Sub

Anzeige
AW: Quatsch!
31.01.2019 15:04:24
PeterK
Hallo
Stimmt noch nicht ganz (DIR liefert nur das gesuchte Unterdirectoy ohne Pfad)
Activeworkbook.SaveAs "I:\-- Aktuelle Projekte\" & sPfad & "\FASN-" & Range("S11"), xlOpenXMLWorkbookMacroEnabled
Ja. Stimmt. Nicht bedacht. owT
31.01.2019 16:03:33
Rudi
;

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

VBA zur automatischen Dateinamen-Generierung aus einer Zelle


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro zu erstellen, das den Dateinamen aus einer Zelle generiert und die Datei speichert, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Rechtsklicke im Projektfenster auf dein Workbook und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Sub Speichern_unter()
       ChDrive "I"
       ChDir "I:\-- Aktuelle Projekte\"
       Dim sPfad As String
       sPfad = Dir("I:\-- Aktuelle Projekte\" & Range("S11") & "*", vbDirectory)
       If sPfad <> "" Then
           ActiveWorkbook.SaveAs sPfad & "\FASN-" & Range("S11").Value & ".xlsm", xlOpenXMLWorkbookMacroEnabled
       Else
           MsgBox "Ordner nicht vorhanden."
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Füge einen Button hinzu, um das Makro auszuführen:

    • Gehe zu Entwicklertools > Einfügen und wähle einen Button aus.
    • Weise dem Button das Makro Speichern_unter zu.
  6. Fülle die Zelle S11 mit der entsprechenden Projektnummer.

  7. Klicke auf den Button, um die Datei zu speichern.


Häufige Fehler und Lösungen

  • Fehler: Ordner nicht vorhanden
    Stelle sicher, dass der Ordner für die Projektnummer existiert. Überprüfe den Pfad und die Schreibweise.

  • Fehler: Datei wird im falschen Verzeichnis gespeichert
    Achte darauf, dass der Code ChDrive und ChDir korrekt verwendet wird, um das richtige Laufwerk und Verzeichnis zu setzen.

  • Fehler: Datei wird nicht als .xlsm gespeichert
    Stelle sicher, dass der Dateiname im SaveAs Befehl die Endung .xlsm enthält.


Alternative Methoden

Falls du keinen VBA-Code nutzen möchtest, kannst du auch folgende Excel-Funktionen verwenden:

  • Verwende die Funktion =VERKETTEN():

    • Erstelle den Dateinamen in einer Zelle, z.B. =VERKETTEN("FASN - "; S11; ".xlsm").
  • Speichere die Datei manuell:

    • Gehe auf Datei > Speichern unter und wähle den gewünschten Pfad, während du den gewünschten Dateinamen manuell eingibst.

Praktische Beispiele

  1. Beispiel 1: Speichern unter Projektname
    Wenn in Zelle S11 die Projektnummer 12345678 steht, wird die Datei unter I:\-- Aktuelle Projekte\12345678\FASN-12345678.xlsm gespeichert.

  2. Beispiel 2: Verwendung eines anderen Verzeichnisses
    Ändere den Pfad im VBA-Code, um die Datei an einem anderen Ort zu speichern. Achte darauf, dass das Verzeichnis existiert.


Tipps für Profis

  • Fehlerbehandlung hinzufügen: Es ist ratsam, im Makro eine umfassendere Fehlerbehandlung einzuführen, um unerwartete Probleme zu erkennen und zu beheben.

  • Makro auf andere Zellen erweitern: Modifiziere den Code, um mehrere Zellen zu berücksichtigen, falls du mehrere Projektnummern speichern möchtest.

  • Dokumentation: Kommentiere deinen Code gut, damit du und andere Benutzer verstehen, was jeder Teil des Codes macht.


FAQ: Häufige Fragen

1. Wie kann ich den Speichervorgang automatisieren?
Du kannst das Makro in ein Ereignis einfügen, z.B. Workbook_BeforeClose, um die Datei automatisch zu speichern, wenn die Arbeitsmappe geschlossen wird.

2. Was passiert, wenn die Projektnummer nicht existiert?
Das Makro gibt eine Fehlermeldung aus, dass der Ordner nicht vorhanden ist. Stelle sicher, dass die Projektnummer korrekt in der Zelle S11 eingegeben wurde.

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