seit einiger Zeit kämpfe ich mit dem Fehler Nr.9 "Index außerhalb des gültigen Bereiches" (Subscription out of Range).
Ich habe folgende Aufgabe und Vorgehen:
- Sheets aus mehreren (z.Z. fünf) Dateien sollen in eine Reportdatei kopiert werden.
- Dazu ist das VBA-Programm in 'Datei_A'; dieses geht in einer Schleife durch die Quellfiles 'WBQuelle'. Kopiert das benötigte Sheet in das dann auch geöffnete 'WBZiel'
- Die Programmdatei bleibt immer offen; die Quellfiles die das Steuerprogramm aus einer Tabelle liest werden der Reihe nach geöffnet - benötigtes sheet wird gesucht - selektiert - zum Zielfile gewechselt - dort einkopiert - umbenannt - gesichert - Quelle und Ziel wird geschlossen.
Das funktioniert auch für den ersten Durchlauf. Das Quellfile hat nur das eine gewünschte Sheet. Das dann folgende Quellfile weist 4 sheets auf (das erste ist das betreffende).
Dabei tritt dann der Indexfehler auf.
Zurvor ermittle ich die genaue Indexnummer des Workbooks, bekommt aber in der Zeile:
Sheets(strLocKeyContentSourceSH).Copy after:=Workbooks(3).Sheets(Sheets.Count)
im Debugger schon den fly-out "Index außerhalb des gültigen Bereiches.
Ich vermute ich mach etwas falsch in der Sheet-Verwaltung... aber was?
Bin für jeden Tipp dankbar ...
vg m
der code schaut an der Stelle so aus...
For intI = 1 To 10
Debug.Print ActiveWorkbook.Name
'check if last entry (Cx="") - if so leave procedure
If IsEmpty(Range("C" & CStr(intRow))) Then Exit Sub
strLocKeyContentSourceWB$ = Range("C" & CStr(intRow))
strLocKeyContentSourceSH$ = Range("D" & CStr(intRow))
strLocKeyContentNewSHName$ = Range("E" & CStr(intRow))
strLocKeyContentSide$ = Range("F" & CStr(intRow))
'read next row in keytable...
intRow = intRow + 1
strLocSourceFile = strPath & "\" & strLocKeyContentSourceWB &
strExtension 'build the source-files data...
Workbooks.Open (strLocSourceFile)
Debug.Print "ActiveWorkbook.Name: " & ActiveWorkbook.Name
'Set objWB = Workbooks(strLocKeyContentSourceWB$)
prcFindWorkbookIndex (ActiveWorkbook.Name)
Workbooks.Open (strPath & "\" & strStellenplanFileName)
Debug.Print "ActiveWorkbook.Name: " & ActiveWorkbook.Name
'Workbooks(ActiveWorkbook.Name).Close
prcFindWorkbookIndex (ActiveWorkbook.Name)
'Workbooks(strLocKeyContentSourceWB).Activate
Workbooks(2).Activate
Sheets(strLocKeyContentSourceSH).Select
Workbooks(3).Activate
Worksheets(Worksheets.Count).Select
Sheets(strLocKeyContentSourceSH).Copy after:=Workbooks(3).Sheets(Sheets.Count)
Workbooks(3).Activate
ActiveSheet.Name = strLocKeyContentNewSHName
Workbooks(3).Save
Workbooks(3).Close
Workbooks(2).Close
ThisWorkbook.Activate
Next intI