Laufzeitfehler bei Kopieren von Datenblättern

ulki

Erfahrenes Mitglied
Hi,

ich bin am verzweifeln.
Ständig erhalte ich den Laufzeitfehler 9 "Index außerhalb des gültigen Bereichs". Und das in einem Stück Code, das ich aus einem funktioniernden Makro kopiert habe.

Hier eine Zusammenfassung der Situation:
Ich schreibe für Excel mit VBA ein MAkro, das zwei Arbeitsmappen öffnet und die Arbeitblätter aus beiden in einer dritten zusammenführt.
Das Öffnen funktioniert jetzt bestens. Aber sobald ich anfange, bzw. anfangen will, die Arbeitsblätter zu kopieren tritt der Laufzeitfehler auf.

Hier ein paar Code-Stücke:
Code:
Workbooks("" & DateiNameNeu & "").Worksheets(SheetAnzNeu - i).Copy _
Befor:=Workbooks("" & DateiNameArbeit & "").Worksheets(1)

Wie ihr euch sicher denken könnt stammt dies aus einer For-Schleife. Dachte zunächst auch es könnte am Index liegen. Habe es dann so versucht:
Code:
 Index = SheetAnzAkt - i
Workbooks("DateiNameAkt").Select
Worksheets(Index).Copy Befor:=Workbooks("" & DateiNameArbeit & "").Worksheets(1)
Und dann tritt der Fehler an der Stelle auf, an der das Workbook ausgewählt werden soll. Muss also an der Art liegen, wie ich den Befehl aufschreibe, oder daran, dass er den Dateinamen nicht erkennt. Beim Debuggen zeigte die Variable aber den richtigen Dateinamen an.

Wenn noch weitere Fragen sind, die euch helfen mir zu helfen nur her damit. Vieleicht bringen mich ja auch die richtigen Fragen auf die Spur dieses Geheimnisses.

ulki
 
Einen Teil habe ich jetzt selbst gelöst.
Workbook(...) arbeitet nicht mit dem Dateinamen, sondern mit dem Namen. Ein kleiner aber wichtiger Unterschied.
Jetzt bekomme ich aber einen anderen Fehler: Laufzeitfehler 1004 Anwendungs- oder objektdefinierter Fehler.

Hier einmal meine ganze Schleife:
Code:
For i = 1 To SheetAnzAkt 'einfügen der Sheets aus Aktuell
      Index = SheetAnzAkt - i + 1
      Workbooks("" & NameAkt & "").Worksheets(Index).Copy _
           Befor:=Workbooks("" & NameArbeit & "").Worksheets(1)
Next i
Erklärung der Variablen:
  • SheetAnzAkt = die Anzahl der Sheets in der ersten Datei
  • NameAkt = Name der ersten Datei
  • NameArbeit = Name der Datei in die, die Sheets eingefügt werden sollen.
Die Zeile in rot ist die, bei der er den Fehler angibt. Ich weiß nicht woran es liegen könnte.

Danke für jede Hilfe, Fragen und Ideen

ulki
 
Ich sehe schon, dass ist ein Fass ohne Boden. Habe auch fröhlich vor mich hin gesucht. Im Netz eigentlich nur Fragen zu diesem Thema gefunden, und nicht eine Anrwort. Habe auch so alle Hebel in Bewegung gesetzt und ein paar Leute gefragt, die sich viel mit Excel beschäftigen. Die haben bis jetzt auch nichts gefunden.
Falls noch jemand ne Idee hat woran es liegen könnte und sei sie auch noch so abwegig. Immer her damit, mir sind die Idden ausgegangen, wo ich noch suchen kann.

Aber dieser Laufzeitfehler ist auch nicht besonders sprechend, oder :(

Sollte ich eine Lösung finden schreibe ich sie hier rein, damit es andere später mal leichter haben.

ulki

P.S. hab nicht editiert, da so die Entwicklung besser zu erkennen ist und mein letzter Post nur indiregt mit der Frage zu tun hat.
 
Ich habe die Lösung gefunden.
Ein E hat gefehlt. *peinlich* :-(
Es schreibt sich Before und nicht Befor. Naja ein Kollege hat drübergeschaut und ihm ist es gleich aufgefallen. Aber man selbst ist was den eigenen Code angeht ja sowieso blind wie ein Maulwurf.
Danke an alle die hier gelesen und sich den Kopf zerbrochen habe. Schade, dass keiner eine Idee hatte oder es sah. Aber das lag sicher nicht am Mangel von gutem Willen ;-]

ulki
 
Zurück