AW: In Excel Worksheet mit OLE suchen
13. Jan 2013, 13:10
Okay, mit dieser Funktion nehme ich Kontakt zu meiner Exceldatei auf, das funktioniert einwandfrei:
function TForm4.ExcelBlaetterAuslesen:boolean;
var
a : string;
anz : integer;
i : integer;
j : integer;
begin
if Filename_Arbeitsplan <> '' then
begin
//Excel erst mal gültig deklarieren
NoExcel := FALSE;
try
ExcelApplication1.Connect;
except
ShowMessage('Excel konnte nicht gestartet werden ! Möglicherweise ist auf diesem System kein Excel installiert.');
//Kein Excel gefunden, NoExcel für Dateischließen ungültig machen
NoExcel := TRUE;
exit;
end;
LCID := GetUserDefaultLCID;
ExcelApplication1.Visible[LCID] := FALSE;
//Arbeitsplan öffne
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workboo ks.Open(Filename_Arbeitsplan, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, LCID));
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheet s.Item[1] as _Worksheet);
ExcelWorksheet1.Activate(LCID);
anz := ExcelWorkbook1.Worksheets.Count;
for i:= 1 to anz do
begin
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheet s.Item[i] as _Worksheet);
ExcelWorksheet1.Activate(LCID);
//Filialnummer eintragen
a := ExcelWorksheet1.Name;
JvTabControl1.Tabs.Add(a);
end;
end;
Form4.BringToFront;
end;
Und diese Prozedur stellt die Verbindung mit einem Arbeitsblatt in der Exceldatei her, funktioniert auch
procedure TForm4.JvTabControl1Change(Sender: TObject);
var
a: string;
i: integer;
begin
i := JvTabControl1.TabIndex;
a := JvTabControl1.Tabs.Strings[i];
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheet s.Item[i+1] as _Worksheet);
ExcelWorksheet1.Activate(LCID);
{
ExcelWorksheet1.Range['A1','F10'].Find('Personal', EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyP aram,EmptyParam,EmptyParam);
ExcelWorkSheet1.Range['A1','B10'].Find('Personal',EmptyParam,TOLEEnum(xlValues),TOL EEnum(xlWhole),
TOLEEnum(xlByColumns),TOLEEnum(xlNext),
TOLEEnum(False),TOLEEnum(False),
EmptyParam,EmptyParam,
EmptyParam);
}
end;
und in den geschweiften Klammern sind meine Versuche zu sehen einen Eintrag in dem Arbeitsblatt zu suchen.
Ich kann mir natürlich eine Funktion schreiben die unter Ausnutzung der Range.Value Methode Zelle für Zelle untersucht.
Aber ich vermute das geht auch eleganter.
Im Moment programmiere ich noch mit Delphi 5, XE3 ist aber schon bestellt ...
|