Liebes Forum,
Was ich tun will:
In eine Interbasedatenbank in eine Tabelle, in eine Spalte was reinschreiben, was ich aus Excel 2007(nur 1 sheet) ausgelesen habe.
In interbase lese ich aus einer Tabelle einen String aus, diesen String soll mir Excel finden, die linke Nachbarzelle als Ergebnis zurückbringen.
Wenn ich das Ergebnis habe, kann ich das in die Interbasetabelle zurückschreiben.
Mein Problem:
Ich greife über die
OLE auf die Exceltabelle zu.
In Excel habe ich ein Makkro aufgezeichnet das mir den find mitgeplottet hat. I'ch bin aber nicht in der Lage das was ich da sehe in Delphi zu übersetzen.
Makkro: Cells.Find(What:="100300", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Makkro ende
Was macht excel da mit den _ (Underscores)?
Wie bekomme ich die aktuelle Zeile und Spalte des Cursors?
Nun suche ich schon seit 2 Tagen im internet nach etwas, was ich verwerten kann, aber leider ohne Erfolg.
Alle Tutorials beschreiben wie man in Excel schreibt, aber nicht wie man aus Excel liest, wenn man weder Zeile noch Spalte kennt.
Was ich bisher habe:
Delphi-Quellcode:
begin
//Excel öffnen und Tabelle laden
Dateiname:='D:\TDB_Artikel_neu\Teileneu.xlsx';
if FileExists(Dateiname) then begin
try
Excel:=CreateOleObject('Excel.Application');
Excel.Workbooks.Open (Dateiname);
b_Excel:=True;
Excel.Visible:=false;
with Datamodule1 do begin
CDS.First;
while not CDS.Eof do begin
art:=cds.FieldByName('ART_NR').AsString;
grp:=cds.FieldByName('ART_GR').Asstring;
val(art,wert,code);
if wert<>0 then begin
schnart:=lese_Artikel(art);
end;
cds.Next;
end;
end;
except
Showmessage('Excel konnte nicht gestartet werden !');
Excel.visible:=true;
EXIT;
end;
end;
end;
function TForm1.lese_Artikel(art: string):String;
var spalte, zeile : integer;
XLApp :OleVariant;
X, Y, Z: Variant;
begin
//Zeilenweise auslesen
excel.Worksheets[1].cells.find(art, MatchCase:=False, SearchFormat:=False).Activate;
zeile:= Excel.ActiveCell.Row; //<-funktioniert nicht
//zeile:=excel.cells[zeile]; //<-funktioniert nicht
//spalte:=excel.cells[spalte]; //<-funktioniert nicht
spalte := Excel.ActiveCell.Column; //<-funktioniert nicht
result:=excel.cells[zeile,spalte-1].select;//<-sinnfrei
end;