In Excel Worksheet mit OLE suchen
Da ich nicht so genau weiß, in welche Rubrik mit dieser Frage und auch schon andere User ähnliche Fragen hier gestellt haben, denke ich das paßt in etwa.
Die Frage handelt von Fernsteuern von MS Excel über OLE. Im großen und ganzen komme ich damit zurecht. Ich suche jetzt noch ein paar Details, unter anderem das Suchen von Einträgen in einem Excel Arbeitsblatt. In Excel gibt es eine Funktion 'Suchen', die als Ergebnis die Koordinate der Zelle anzeigt, in der das Gesuchte steht. Gibt es eine solche Funktion auch im OLE. Ich habe versucht dazu ein Source Sample zu finden. Leider ohne Erfolg. Es gibt wohl in VB eine Funktion Worksheet.Range['..','..'].Find( .... ), die ich aber nicht in Delphi zum Laufen bringe. Weiß jemand Hilfe ? |
AW: In Excel Worksheet mit OLE suchen
Hallo,
zeig mal bitte mehr code, was Du bis jetzt genau hast und was Du genau nicht zum Laufen bekommst Insesondera auch, wie du Dich mit Excel verbindest. Gruß Frank PS: Willkommen :hi: |
AW: In Excel Worksheet mit OLE suchen
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. |
AW: In Excel Worksheet mit OLE suchen
nutz mal bitte die Delphi-tags, wenn du Code postest.
probier mal das, habe ich in meinen Testprojekten gefunden. Ich weiß jetzt aber nicht mehr wieso weshalb warum ;-), mußt Du dir selber anpassen.
Delphi-Quellcode:
dann mal das ganze xl... durch emptyparam zu ersetzen, an was es dann wirklich liegt und wo eine Angabe zwingend erforderlich ist.
//Var erg:excelrange;
erg:= ExcelWorksheet1.Range['A1','F10'].Find( 'Personal', emptyparam {ExcelWorksheet1.Cells.Item[Arow,Acol], }, xlValues, xlWhole, xlByRows, xlNext, false, false, EmptyParam); if erg<>NIL then begin Memo1.Lines.Add('juhu'); Memo1.Lines.Add(inttostr(erg.Column)+'/'+inttostr(erg.Row)); end else Memo1.Lines.Add('nix gefunden'); Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz