Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel vba Dateiname aus verschiedenen Zelldaten
#1
Hallo zusammen,

bevor ich mich mal wieder mit einer Frage an Euch wende, möchte ich Euch allen ein frohes Weihnachtsfest wünschen!

Nun zu meiner Frage:
Für die Abarbeitung eines Makros benötige ich einen definierten Dateinamen, der sich aber immer, je nach Datum/Monat/Jahr, ändert.
Bisher habe ich den aktuellen Dateinamen immer direkt im Makro deklariert... und der kann so lauten:

Set wbkZiel = Workbooks("Testdatei_Dezember_2020.xlsm")

Jetzt möchte ich diesen Dateinamen aber direkt aus Daten aus bestimmten Zelleinträgen zusammensetzen, z.B. so:
  aktMonat = Range("K3").Value
  aktJahr = Range("L3").Value

Set wbkZiel = Workbooks("Testdatei_"& aktMonat & "_" & aktJahr & ".xlsm")

Das funktioniert aber leider so nicht.
Bekomme hier Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs.


Wie muss ich diesen Set-Befehl richtig deklarieren, bzw. wie muss ich den Namen aus den Zellfragmenten richtig zusammensetzen?

Vielleicht könnt Ihr mir auf die Sprünge helfen?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#2
Hallo Erich,

(25.12.2020, 15:14)sharky51 schrieb: Wie muss ich diesen Set-Befehl richtig deklarieren, bzw. wie muss ich den Namen aus den Zellfragmenten richtig zusammensetzen?

ohne zu wissen, was in diesen Zellen wirklich steht, ist eine Antwort nicht möglich. Smile

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • sharky51
Antworten Top
#3
(25.12.2020, 15:14)sharky51 schrieb: 1. Das funktioniert aber leider so nicht.

2. Bekomme hier Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs.


zu 1. normal schon


zu 2. Dann stimmen die Zellinhalte nicht oder es wird eine nicht geöffnete Mappe angesprochen
[-] Folgende(r) 1 Nutzer sagt Danke an ralf_b für diesen Beitrag:
  • sharky51
Antworten Top
#4
Hallo Uwe, hallo Ralf,

danke für die Rückmeldung.

Also, die Mappe ist geöffnet.

Zum Testen hatte ich mir diese Hilfsdaten erzeugt:
In K3 steht die Formel: "=TEXT(HEUTE();"MMMM")" daraus ergibt sich dann ... aktMonat = Range("K3").Value

In L3 steht die Formel: "=JAHR(HEUTE())" daraus ergibt sich weiter ... aktJahr = Range("L3").Value

Aber eigentlich würde ich gerne direkt aus meiner eigentlichen Datumszelle aus "C3" des Dateinamens zusammenbauen.
In "C3" steht das komplette Datum in der Form: Fr 25.12.2020 und ist als Standard formatiert.

Vielleicht könnt Ihr mir da doch noch den richtigen Tipp geben?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#5
Hallo,

schon mal so versucht?
Code:
Set wbkZiel = Workbooks("Testdatei_" & Range("K3").Text & "_" & Range("L3").Text & ".xlsm")
Da vor den Range-Objekten kein Tabellenblatt angegeben ist, muß bei Makroausführung das Blatt aktiv sein, auf dem auch in den Zellen K3 und L3 die entsprechenden Daten stehen. Ansonsten muß vor den beiden Range noch das entsprechende Tabellenblatt angegeben werden.

Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • sharky51
Antworten Top
#6
Hallo Werner,

habe gerade beide Deiner Vorschläge ausprobiert. Ich bekomme immer noch dieselbe Fehlermeldung. Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs.

Code:
  Set wbkZiel = Workbooks("Testdatei_" & ActiveSheet.Range("K3").Text & "_" & ActiveSheet.Range("L3").Text & ".xlsm")

Code:
Set wbkZiel = Workbooks("Testdatei_" & Range("K3").Text & "_" & Range("L3").Text & ".xlsm")
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#7
Hallo,

bei mir geht das genau so und mehr kann ich dazu nicht sagen.
Sicher, dass die Datei, die du ansprichst eine .xlsm ist und nicht eine .xlsx ?

Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • sharky51
Antworten Top
#8
Hallo Werner,

ja das ist eine *.xlsm - Datei.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#9
Hallo,

dann stimmt der zusammengsetzte Name der Datei nicht mit dem tatsächlichen Namen der Datei überein, mehr kann ich dazu dann auch nicht sagen.

Ansonsten mal beide Dateien hier hochladen. Daten, außer den Formeln für den Dateinamen, brauchen dann keine drin zu sein.

Gruß Werner
Antworten Top
#10
versuchs mal damit.  zum testen die Namen stehen dann im Direktfensters des Vbaeditors
alle geöffneten Workbooks und deren Worksheets werden aufgelistet.  
evtl bringt das Klarheit.


Code:
Sub test()
    Dim x As Workbook, sh As Worksheet, wbk As Workbook

    For Each x In Workbooks
      Debug.Print "'" & x.Name & "'"
      For Each sh In x.Worksheets
        Debug.Print "    '" & sh.Name & "'"
      Next
      Set wbk = Workbooks(x.Name)
     
    Next

End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an ralf_b für diesen Beitrag:
  • sharky51
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste