Thema: Delphi excel to interbase

Einzelnen Beitrag anzeigen

hirsch

Registriert seit: 29. Jan 2008
Ort: Tuttlingen
88 Beiträge
 
Delphi 2007 Professional
 
#1

excel to interbase

  Alt 20. Sep 2011, 13:09
Datenbank: interbase/excel • Version: 6.0/2007 • Zugriff über: ibconnect
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;
Wolfgang Hirsch

Geändert von hirsch (20. Sep 2011 um 13:57 Uhr)
  Mit Zitat antworten Zitat