Excel auslesen
Hallo zusammen,
ich möchte aus einer bestimmten Excel-Datei z. B. aus der Zelle A1 den Wert in ein Edit-Feld übernehmen lassen. Hier im Forum habe ich schon mal etwas gefunden. Aber ich kann es leider nicht auf mich umbauen. Kann mir bitte wer helfen?! Hier mal mein bisheriger Code (Ausgabe noch in ShowMessage):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin // Excel öffnen lcid := GetUserDefaultLCID; excel := TExcelApplication.Create(Form1); excel.Connect; // Exceldatei laden (test.xls) wb := excel.Workbooks.Open('test.xls', emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, lcid); // erstes Worksheet auswählen ws := wb.Sheets[1] as _WorkSheet; ShowMessage(ws.Cells.Item[1,a].value); //Fehlermeldung "a" undefinierter Bezeichner end; Vielen Dank im Voraus. |
Re: Excel auslesen
hallo micha ,
kenn mich mit exel nicht so richtig aus, aber müsstest du nicht a als einen integer deklarieren? oder probiere mal die 1 einzusetzen, dann müsste er dir aus dem item 1,1 den zellwert auslesen. raik ich sehe gerade toms ist da :P der kann dir da bestimmt helfen |
Re: Excel auslesen
Zitat:
No, funktioniert nicht. Hab ich schon alles durchprobiert. |
Re: Excel auslesen
versuche mal für a:
Delphi-Quellcode:
einzusetzen.
ShowMessage(ws.Cells.Item[1,wb.activecell.column].value);
raik |
Re: Excel auslesen
Nein, auch nicht.
|
Re: Excel auslesen
Hi,
Probier's mal so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var WorkBk: _WorkBook; // ein WorkBook deklarieren WorkSheet: _WorkSheet; // ein WorkSheet deklarieren XLApp: TExcelApplication; _lcid: LCID; begin _lcid := GetUserDefaultLCID; XLApp := TExcelApplication.Create(Self); try // Zum Server TExcelApplication verbinden XLApp.Connect; try // WorkBooks zur ExcelApplication hinzufügen XLApp.Workbooks.Open('c:\test.xls', emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, EmptyParam, _lcid); // erstes WorkBook auswählen WorkBk := XLApp.WorkBooks.Item[1]; // erstes WorkSheet definieren WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet; // Wer aus Zelle (1,1) anzeigen ShowMessage(Worksheet.Cells.Item[1, 1].Value); // XLApp.Visible[0] := True; finally // Server disconnecten XLApp.Disconnect; end; finally XLApp.Quit; end; end; |
Re: Excel auslesen
@ toms
wußte ich doch :thuimb: raik |
Re: Excel auslesen
Schon mal ein großes DANKE.
Aber ich erhalten nun eine Fehlermeldung (habe ich bei meinem Code beim Rumprobieren auch schon mal erhalten): Zugriffsverletzung in Modul 'RPCRT4.DLL' Liegt das an dieser Datei? Ist die bei mir vielleicht geschrottet? Thanks |
Re: Excel auslesen
Zitat:
|
Re: Excel auslesen
Hab den PC auch schon runtergefahren. - Fehlermeldung kommt immer noch.
Muss ich wohl noch n paar Tage warten. Dann kann ichs mal an nem anderen PC versuchen. Aber wenn's bei dir klappt, dann sag ich schon mal Dankeschööön |
Re: Excel auslesen
Wollte bloß kurz bescheid sagen, dass es an einem anderen Rechner super klappt.
Dankeschööön. |
Re: Excel auslesen
Hallo,
Ich hoffe es antwortet mir noch wer auf diesen alten Post. Und zwar verwende ich auch den Code, den toms geschrieben hat und der funktioniert auch. Mein Problem ist es aber, dass ich nicht die Nummer der Tabelle eingeben will sondern den Tabellennamen selber. (Die Tabelle, von der ich auslese liegt bei verschiedenen exel files auf einer anderen Nummer)
Delphi-Quellcode:
Danke schonmal
// erstes WorkSheet definieren
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet; |
Re: Excel auslesen
habs selber herausgefunden, wen es interessiert:
Delphi-Quellcode:
Gruß
WorkSheet := Workbk.sheets['Tabelle2'] as _WorkSheet;
|
Re: Excel auslesen
Hallo rich123,
ich bin mir da nicht ganz sicher, aber ich denke das sollte funktionieren. Soweit ich weiß kannst Du bei VBA über Namen oder Nummern zugreifen. Nur sieht das in der Hilfe ein wenig anders aus: Zitat:
Da war ich etwas langsam, dann noch eine Empfehlung hinterher: nach Möglichkeit immer ein "activ..." definieren, da is die Chance sich zu verdaddeln nicht so groß, weil alle Zugriffe auf "activ...." erfolgen. Gruß K-H |
Re: Excel auslesen
Hallo zusammen,
Nochmals will ich was zu dem Code erfragen.
Delphi-Quellcode:
Wäre es auch möglich statt der Zelle 1,1 einfach 1,B oder so anzugeben? (Also die Spaltenbezeichnung wie bei Excel)
ShowMessage(Worksheet.Cells.Item[1, 1].Value);
Gibt es die Funtkion schon vorgefertigt oder müsste man sich die selber ausprogrammieren? Danke für die Hilfe Gruß |
Re: Excel auslesen
Zitat:
z.B
Delphi-Quellcode:
Worksheet.Range['B53','B53'].Value
|
Re: Excel auslesen
Hallo,
ich würde nur statt ‚Value’ ‚Value2’ vorziehen, um Probleme mit deutschen Datumsformaten zu vermeiden. Bis bald Chemiker |
Re: Excel auslesen
Hier mal eine Skizze wie das geht...
Delphi-Quellcode:
Application:TExcelApplication;
var ActiveSheet:_WorkSheet; ActiveSheet:=Application.ActiveSheet as _WorkSheet; var Sheet:variant; var Zelle, Value:string; Sheet:=ActiveSheet; Zelle:='A1'; Value:='Hello World'; Sheet.Range[Zelle].Value:=Value; |
Re: Excel auslesen
Hallo omata,
das dürfte aber nicht funktionieren, weil Range in Delphi im Gegensatz zu Excel 2 Parameter erwartet. So müsste es gehen.
Delphi-Quellcode:
Oder direkt
Sheet.Range[Zelle, EmptyParam].Value:=Value;
Delphi-Quellcode:
Bis bald Chemiker
Sheet.Range['A1',EmptyParam].Value:=Value;
|
Re: Excel auslesen
Zitat:
|
Re: Excel auslesen
Hallo omata,
Zitat:
Delphi-Quellcode:
Ich habe zurzeit kein Excel auf dem Rechner, deshalb kann ich Deine Variante nicht ausprobieren.
property Range[Cell1: OleVariant; Cell2: OleVariant]: ExcelRange read Get_Range;
Bis bald Chemiker |
Re: Excel auslesen
Hi,
sorry das ich diesen alten Thread ausgrabe aber ich wollte nicht extra einen neuen für das Thema aufmachen. Ich wollte mal fragen was es mit der lcid auf sich hat und wofür sie als letzten Parameter in
Delphi-Quellcode:
brauche?
XLApp.Workbooks.Open('c:\test.xls', emptyParam, emptyParam,
emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, EmptyParam, _lcid); Wenn ich die Variable wie Toms mit dem Typ LCID deklarieren will bekomme ich eine Fehlermeldung. Welche Klasse muss ich da einbinden? Danke für eure Antworten :) lg Alex |
Re: Excel auslesen
Hallo Borschi,
welche Excel-Version hast Du installiert? Wookbooks.Open ist die Parameteranzahl von Version zu Version verschieden. Das kannst Du überprüfen, indem Du VBA in Excel aufrufst und Dir die Parameter von Workbooks.Open ansiehst. Bis bald Chemiker |
Re: Excel auslesen
Hi,
ich habe Office 2003 installiert. Wie rufe ich denn VBA denn in Excel auf? Und was ist das eigentlich? VG Alex |
Re: Excel auslesen
VBA: Visual Basic for Applications.
Wird für Makros verwendet |
Re: Excel auslesen
In Excel:
Extras -> Makro -> VB Editor oder direkt über Alt+F11. Gerald |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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