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

Forumthread: Speichern unter mit Dateiname aus Zelle

Speichern unter mit Dateiname aus Zelle
17.12.2016 15:23:42
Ingo
Hallo
Ich habe Excel 2013 auf einem PC mit Windows 10 Pro 64 bit.
Ich möchte gerne ein Makro machen um eine Excel Datei zu speichern.
Das habe ich nun einfach mal mit dem Macro-Recorder gemacht.
Dabei ist das folgende Macro herausgekommen:
Sub Test()
ChDir "C:\blabla\Rechnungen für Kunden"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\blabla\Rechnungen für Kunden\5802359.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub

Wie man hier sieht, speichert das Macro die Datei ja unter einem ganz bestimmten Dateinamen (5802359).
Ich hätte es aber gerne so, dass das Makro den Dateinamen quasi aus dem Wert einer bestimmten Zelle holt (A15).
Ist das so ohne Weiteres machbar? Kann ich quasi an die Stelle im VBA-Code, wo jetzt noch 5802359 irgendwie was einsetzen, was dort den Inhalt von Zelle A15 einsetzt?
Da ich selber leider nur ganz bescheidene Anfänger-Kenntnisse von VBA habe, würde ich mich über Eure Hilfe wirklich riesig freuen.
Gruß
Ingo
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern unter mit Dateiname aus Zelle
17.12.2016 15:26:53
Hajo_Zi
Hallo Ingo
"C:\blabla\Rechnungen für Kunden\" & Range("A15") &".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

AW: Speichern unter mit Dateiname aus Zelle
17.12.2016 16:06:45
Ingo
Hallo Hajo
Oh ja das klappt ja super.
Da hätte ich im Grunde auch selber drauf kommen können/müssen.
Vielen lieben Dank.
Ich stelle dabei aber folgendes fest:
Wenn der Dateiname schon vergeben ist, also wenn im entsprechenden Ordner schon eine Datei mit dem Namen aus Zelle A15 vorhanden ist, wird die einfach ungefragt überschrieben.
Es kommt also nicht die Frage, ob die Datei überschrieben wird, so wie sie ja kommt, wenn man quasi "von Hand" abspeichert.
Ließe sich das noch einbauen?
Gruß
Ingo
Anzeige
AW: Speichern unter mit Dateiname aus Zelle
17.12.2016 16:09:04
Hajo_Zi
prüfe vorhanden ob vorhanden.
Option Explicit
Sub Vorhanden_Datei()
' Fehler falls LW nicht vorhanden
If Dir(ThisWorkbook.Path & "\*.xls", vbNormal) = "" Then
MsgBox "nicht vorhanden"
Else
MsgBox "vorhanden"
End If
End Sub
Sub Datei_vorhanden()
' von Berti Koern
Dim Fso As Object, Dateiname As String
Set Fso = CreateObject("Scripting.FileSystemObject")
Dateiname = "L:\Eigene Dateien\Hajo\Adresse.xls"
' Ergänzung öffnung Hajo
If Fso.FileExists(Dateiname) Then
Workbooks.Open Dateiname
End If
Set Fso = Nothing
End Sub
Gruß Hajo
Anzeige
AW: Speichern unter mit Dateiname aus Zelle
17.12.2016 16:50:14
Ingo
Danke Dir nochmals.
Leider war ich damit dann doch etwas überfordert.
Darum habe ich nochmal herumgegoogelt.
Und dabei bin ich fündig geworden und habe nun das hier "gebastelt":
Sub Test()
If Dir("C:\blabla\Rechnungen für Kunden\" & Range("A15") & ".pdf") = "" Then
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\blabla\Rechnungen für Kunden\" & Range("A15") & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Else
MsgBox "Dateiname bzw. Rechnungsnummer bereits vorhanden!"
End If
End Sub
Funktionieren tut es.
Kann ich das so lassen?
Oder ist da noch "Unsinn" drin oder irgendwelche blöden Fehler?
Anzeige
AW: Speichern unter mit Dateiname aus Zelle
17.12.2016 16:53:49
Hajo_Zi
Du hast also meinen ersten Code benutzt.
Gruß Hajo
AW: Speichern unter mit Dateiname aus Zelle
17.12.2016 17:55:21
Ingo
Oh ja klar. Das überschneidet sich natürlich.
Danke Dir sehr.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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

Speichern unter mit Dateiname aus Zelle


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei mit einem spezifischen Dateinamen, der aus einer Zelle übernommen wird, zu speichern, kannst Du das folgende Makro verwenden. In diesem Beispiel wird der Dateiname aus der Zelle A15 entnommen. Achte darauf, dass Du Excel 2013 oder eine neuere Version verwendest.

Sub SpeichernUnterMitDateinameAusZelle()
    Dim dateiname As String
    dateiname = "C:\blabla\Rechnungen für Kunden\" & Range("A15").Value & ".pdf"

    If Dir(dateiname) = "" Then
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=dateiname, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
    Else
        MsgBox "Dateiname bzw. Rechnungsnummer bereits vorhanden!"
    End If
End Sub

Füge diesen Code in ein Modul in Deinem VBA-Editor ein. Stelle sicher, dass der Pfad und der Dateiname korrekt sind.


Häufige Fehler und Lösungen

Fehler: "Dateiname bereits vorhanden!"

  • Lösung: Das Makro überprüft, ob die Datei bereits existiert. Wenn ja, wird eine entsprechende Meldung angezeigt. Du kannst den MsgBox-Befehl anpassen oder eine Abfrage hinzufügen, die den Benutzer fragt, ob die Datei überschrieben werden soll.

Fehler: "Laufzeitfehler 52"

  • Ursache: Der angegebene Pfad existiert nicht oder ist falsch.
  • Lösung: Überprüfe den Pfad und stelle sicher, dass er korrekt ist und die nötigen Berechtigungen vorhanden sind.

Alternative Methoden

Eine alternative Methode ist die Verwendung des Application.GetSaveAsFilename-Dialogs, um dem Benutzer die Möglichkeit zu geben, einen Speicherort auszuwählen und den Dateinamen einzugeben. So kannst Du das Makro umgestalten:

Sub SpeichernUnterMitDialog()
    Dim dateiname As Variant
    dateiname = Application.GetSaveAsFilename(InitialFileName:=Range("A15").Value & ".pdf", _
        FileFilter:="PDF Files (*.pdf), *.pdf")

    If dateiname <> False Then
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=dateiname, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
    End If
End Sub

Praktische Beispiele

  1. Speichern einer Rechnung mit Kundennamen: Wenn in Zelle A15 der Kunde "Müller" steht, wird die Datei als "Müller.pdf" im angegebenen Ordner gespeichert.

  2. Automatische Generierung von Rechnungsnummern: Du kannst in Zelle A15 eine Formel verwenden, die automatisch eine Rechnungsnummer generiert, die dann als Dateiname dient.


Tipps für Profis

  • Verwendung von Dateipfaden aus Zellen: Du kannst den Pfad für das Speichern ebenfalls aus einer Zelle übernehmen. Setze einfach den Pfad in eine andere Zelle (z.B. B15) und ändere den Code entsprechend:

    dateiname = Range("B15").Value & "\" & Range("A15").Value & ".pdf"
  • Berechtigungen prüfen: Stelle sicher, dass Du die nötigen Berechtigungen für das Speichern im gewählten Verzeichnis hast.


FAQ: Häufige Fragen

1. Wie kann ich den Speicherort für die Datei ändern? Du kannst den Pfad im Code anpassen, indem Du den Pfad in eine Zelle schreibst und den Code entsprechend änderst.

2. Was passiert, wenn der Dateiname ungültige Zeichen enthält? Das Makro wird einen Fehler ausgeben. Stelle sicher, dass der eingegebene Dateiname keine ungültigen Zeichen wie \ / : * ? " < > | enthält.

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