Einzelnen Beitrag anzeigen

Josef_D

Registriert seit: 22. Aug 2006
Ort: Aachen
7 Beiträge
 
Delphi XE3 Professional
 
#3

AW: In Excel Worksheet mit OLE suchen

  Alt 13. Jan 2013, 12: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 ...
  Mit Zitat antworten Zitat