:marine Hi,
ich überweise demjenigen 10 EUR (wenn gewünscht), der mir zuerst die Lösung präsentiert. Du schreibst mir deine Kontonummer mit. Könnte gut sein, dass ich dich in zwei Wochen wieder brauche. Das wäre dann eine reine Zeitfrage für mich. So könntest du mal was mehr an deinem Wissen verdienen.
Es geht konkret um folg. Zeilen (Lösungsansätze unten):
*****************************
ChDir "C:\Test\J\M"
Workbooks.Open FileName:= _
"C:\Test\J\M\Haupt-Mappe.xls", UpdateLinks _
:=0
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
' Felix
Sheets("Felix").Select
ChDir "C:\Test\J\M"
Workbooks.Open FileName:="C:\Test\J\M\Felix.xls"
Windows("Haupt-Mappe.xls").Activate
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = 1
Range("A4:AU60").Select
Selection.Copy
Windows("Felix.xls").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("Z27").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Ergebnisse.xls").Activate
Range("H4").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Windows("Felix.xls").Activate
Columns("AB:AD").Select
Selection.Delete Shift:=xlToLeft
Columns("AC:AD").Select
Selection.Delete Shift:=xlToLeft
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$2"
.PrintTitleColumns = "$A:$A"
End With
ActiveSheet.PageSetup.PrintArea = "$A$1:$AN$51"
Columns("AA:AN").Select
Selection.ColumnWidth = 8
Range("AD9").Select
ActiveWorkbook.Save
ActiveWindow.Close
***********************************
Lösungsansatz 1 (ähnl. Beispiel):
for each x in Workbooks("haupt").sheets
x.range("B4").formula="test"
workbooks(x.name).sheets("tab1").range("B4").formula="test"
next x
Lösungsansatz 2:
2 Feldvariablen anlegen, die die Namen der Blätter und die der korrespondierenden Mappen
in gleicher Reihenfolge enthalten (evtl auch automatisiert ermittelt). Dann kannst du natürlich über For...Next_index oder
For_Each_subvar_In_feldvariable...Next_subvar die Mappen den Blättern zuordnen.
***************
ursprüngl. Frage:
!!! SOS !!!
Hallo zusammen,
ich scheitere so ein bisschen am Setzen der richtigen Parameter bei einer For-Each-Next-Schleife. Ich möchte Folgendes tun:
Ich habe eine Quelldatei mit einer Liste von 20 Namen (xls oder txt empfohlen?).
Ich habe eine Haupt-Excel-Mappe, in der ich 20 Tabellenblätter habe, bezeichnet mit den o. g. Quellnamen.
Es gibt weitere 20 Excel-Dateien mit den gleichen Namen.
Zusammengefasst als Beispiel:
In der Quelldatei Namen.xls (oder namen.txt?) steht "Felix".
In der Haupt-Excel-Mappe gibt es neben all den weiteren ein Blatt namens "Felix".
Zusätzlich gibt es eine Excel-Tabelle namens Felix.xls.
Nun meine Frage:
Wie kann ich die Quelldatei 20mal auslesen
und in der Haupt-Excel-Mappe eine Folge von Befehlen ablaufen lassen,
so dass beispielsweise in jedem der 20 Tabellenblätter
jeweils in Zelle B4 das Wort "test" eingetragen wird
UND ebenfalls während dieser Befehlsabfolge die jeweilige der 20 Excel-Tabellen aufgerufen wird und dort ebenfalls in B4 das
Wort "test" eingetragen wird ?
Ich benötige z. B. den konkreten Befehl, um das Sheet "Felix" nicht mit "Sheets("Felix").Select" aufzurufen, sondern mit
einer entsprechenden Variable lt. Definition im Kopf der For-Each-Next-Schleife. Eine Alternative mit Variable brauche ich
auch hierfür: "Windows("Felix.xls").Activate".
Ich danke euch im voraus! Ihr würdet mir SEEEEEEEEEEhr helfen!
Übrigens ist der Eintrag 'Range("H36").Select' auch ein veränderlicher. Es sollen nämlich in der Zieltabelle Ergebnisse.xls alle Ergebnisse ab Zelle H4 untereinander eingetragen werden. Es sind also mehr als zwanzig Einträge. 20 war nur ein Beispiel.