VBA Excel: For Each Next, Tabelle auslesen usw.??

Bild

Betrifft: VBA Excel: For Each Next, Tabelle auslesen usw.?? von: Andi
Geschrieben am: 08.02.2005 16:11:50

!!! 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!

Andi

Bild


Betrifft: AW: VBA Excel: For Each Next, Tabelle auslesen usw.?? von: Luc
Geschrieben am: 08.02.2005 16:49:22

Hallo Andi,

for each x in Workbooks("haupt").sheets
x.range("B4").formula="test"
workbooks(x.name).sheets("tab1").range("B4").formula="test"
next x

Viel Glück Luc


Bild


Betrifft: AW: VBA Excel: For Each Next, Tabelle auslesen usw.?? von: Luc
Geschrieben am: 08.02.2005 19:37:08

Ahoi Andi,
natürlich musst du x.name als Workbook(Datei)-Name noch um die übliche Endung ergänzen, also x.name & ".xls".
Ciao Luc


Bild


Betrifft: AW: VBA Excel: For Each Next, Tabelle auslesen usw.?? von: Andi
Geschrieben am: 09.02.2005 09:40:56

Hallo Luc,

vielen Dank für deine schnellen Tips! Leider kam ich gestern nicht mehr zum Testen. Ich werde dies heute im Laufe des Tages versuchen.
Mal schauen, ob ich deine Tips unterkriege. Zur Not muss ich doch auf FOR-Next-Schleife zurückgreifen. Dann müsste ich aber die Anzahl der Namen in der Quelldatei immer durchzählen und im Macro entspr. anpassen. Na, hoffentlich gelingt mir eine Lösung.

Andi

Mein bisheriger Macrocode ohne deine Tips ist folg.:

*****************************

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
***********************************


Bild


Betrifft: AW: VBA Excel: For Each Next, Tabelle auslesen usw.?? von: Luc
Geschrieben am: 09.02.2005 10:17:35

Hallo Andi,
das geht natürlich auch! Du kannst 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.
Erfolg Luc

PS: Aus einem "Makro" wird erst durch eine Schleife ein echtes Programm!


Bild


Betrifft: AW: VBA Excel: For Each Next, Tabelle auslesen usw.?? von: Andi
Geschrieben am: 09.02.2005 14:46:56

Hallo Luc,

leider kriege ich das nicht hin. Da fehlen mir doch noch die Kenntnisse an der Stelle.
Könntest du mir BIIITTE evtl. im mitgelieferten Makrocode die Alternativ-Variablen (für Haupt-Mappe.xls, Felix.xls, Felix, Ergebnisse.xls) einsetzen mit For_Each-Schleife? Du scheinst ja ein echter Voll-Profi zu sein, wenn du so schnell mit Lösungsvorschlägen antwortest.

Ü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.

Du wärst wahrscheinlich meine Rettung im Kampf gegen die Stunden.


Best greetz
Andi!


Bild


Betrifft: AW: VBA Excel: For Each Next, Tabelle auslesen usw.?? von: Luc
Geschrieben am: 09.02.2005 17:20:08

Hallo Andi,
will's etwa nicht so wie von mir geschrieben klappen? Ich weiß nicht, ob ich da heut noch ran kann. Muss jetzt los und hab mir ne TotalErkältung geholt.
Gruß Luc


Bild


Betrifft: AW: VBA Excel: For Each Next, Tabelle auslesen usw.?? von: Andi
Geschrieben am: 11.02.2005 12:41:49

Hi Luc,

wäre es ein Angebot, wenn du mir deine Kontonummer schreibst und ich dir 10 EUR überweise, wenn du mir die Lösung präsentierst? 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.

Andi


 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Excel: For Each Next, Tabelle auslesen usw.??"