Switche zwischen den gleichzeitig geöffneten Dateien (Workbooks) zu dem jeweils darin benötigten Arbeitsblatt (Worksheet) wie folgt:
Code:
Procedure ActivateWorkSheet(BookIndex, SheetIndex: Integer);
begin
fExcel.WorkBook [BookIndex].Activate;
fExcel.WorkSheets [SheetIndex].Activate;
end;
und bearbeite das dadurch jeweils gerade aktivierte Arbeitsblatt.
Wobei die Exelianer nicht so gerne auf diese Art arbeiten, sprich immer wieder Workbooks, selecten und aktivieren und zwischen denen hin und her springen oder kopieren (zumindes was ich so an VBA Code kenne).
Besser ist es da Objektvariablen anzulegen und dann direkt Werte aus Zellen auszulesen oder zuzuweisen, ala:
Delphi-Quellcode:
var
w1:Variant; //Variablen für Workbooks
w2:Variant;
ws1:Variant; //Variablen für Worksheets
ws2:Variant;
//Kenn das nur direkt aus VBA, kann sein, das in Delphi die Variablen
//vom Typ Object sein müssen. In VBA reicht Variant.
begin
w1:=fExcel.Workbooks[1]; //Wenn Workbooks offen nur zuweisen,
w2:=fExcel.Workbooks.Add(Pfadname); //sonst öffnen (oder war es mit .open?)
ws1:=w1.Workshhets[4];
ws2:=w2.Workshhets[4];
//Machwas
ws1.cells[1,1].Value := ws2.Cells[1,1].Value;
end