Registriert seit: 09.05.2015
Version(en): 2013, Office 365
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?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Erich,
(25.12.2020, 16: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.
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• sharky51
Registriert seit: 12.06.2020
Version(en): 2024, 365business
(25.12.2020, 16: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:1 Nutzer sagt Danke an ralf_b für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
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?
Registriert seit: 05.09.2017
Version(en): 2013
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:1 Nutzer sagt Danke an Werner.M für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
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")
Registriert seit: 05.09.2017
Version(en): 2013
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:1 Nutzer sagt Danke an Werner.M für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Werner,
ja das ist eine *.xlsm - Datei.
Registriert seit: 05.09.2017
Version(en): 2013
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
Registriert seit: 12.06.2020
Version(en): 2024, 365business
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:1 Nutzer sagt Danke an ralf_b für diesen Beitrag 28
• sharky51