Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Excel: Workbooks.Open schlägt fehl (https://www.delphipraxis.net/95868-excel-workbooks-open-schlaegt-fehl.html)

Mamphil 14. Jul 2007 22:09


Excel: Workbooks.Open schlägt fehl
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich verwende eine TExcelApplication (ExcelApplication), um eine Excel-Tabelle mit Delphi 7 zu öffnen und Daten zu extrahieren. Auf meinem Rechner (Entwicklungsumgebung, Excel XP installiert) funktioniert auch alles einwandfrei.

Auf einem zweiten Rechner (keine Entwicklungsumgebung, Excel 2000) gibt es mit dem Verbinden zu Excel per XLApp.Connect; kein Problem, erst das Öffnen mit XLApp.Workbooks.Open(...) bricht mit einer Fehlermeldung "Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000 fehlgeschlagen." ab bzw. bleibt im try-except-Block hängen.

Hier der verwendete Code:
Delphi-Quellcode:
try
  XLApp.Connect;
except
  MessageDlg('Excel konnte nicht gestartet werden!', mtError, [mbOK], 0);
  Application.Terminate;
end;

try
  XLApp.Workbooks.Open(XLDialog.FileName, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, GetUserDefaultLCID());
except
  MessageDlg('Die Datei konnte nicht geöffnet werden!', mtError, [mbOK], 0);
  Application.Terminate;
end;

XLApp.Quit;
XLApp.Disconnect;
MessageDlg('Datei wurde geöffnet!', mtInformation, [mbOK], 0);
Ich würde mich freuen, wenn ihr Hinweise zur Fehlersuche habt!

Vielen Dank und viele Grüße,
Mamphil

PS: Da ich keinen direkten Zugriff auf den Problemrechner habe, habe ich den problembehafteten Code aus dem eigentlichen Programm herauskopiert und hoffe, dass der Fehler auf dem Gerät trotzdem auftreten würde...

Christian Seehase 14. Jul 2007 22:24

Re: Excel: Workbooks.Open schlägt fehl
 
Moin Mamphil,

ich denke mal, dass das Problem Execl 2000 ist, denn Excel XP ist eigentlich Excel 2002, also aktueller.
Das ist so erstmal das einzige, was mir auffällt.

Mamphil 15. Jul 2007 12:01

Re: Excel: Workbooks.Open schlägt fehl
 
Hallo,

vielen Dank für deine Antwort. Ich habe jetzt folgenden Grund für das Problem ermitteln können:
Die verwendete TExcelApplication aus dem Server-Register heißt dort "ExcelApplication (ExcelXP)", sie ist also scheinbar nur für Excel XP (und hoffentlich höhere) funktionstüchtig.

Ich habe hier folgendes gefunden:
Zitat:

Beim Umstieg auf BDS2006 stehen mir ja nur 2000 oder XP bei der Installation zur Verfügung.
Gilt das auch für Delphi 7?

Wenn ja, habe ich mich wahrscheinlich bei der Installation für XP entschieden. Wisst ihr, wie ich meine Delphi-Installation auf Office 2000-Support downgraden kann? Beim Einlegen der Installations-CD konnte ich unter dem Menüpunkt "Installation modifizieren" nichts geeignetes aus- / umwählen.

Vielen Dank für eure Hilfe!
Mamphil

Nachtrag:
Laut http://www.delphipraxis.net/internal...ct.php?t=55461 kann ich über Projekt -> Typebibliothek importieren eine TExcelApplication hinzufügen. Ich habe auch eine solche gefunden, allerdings nur für das installierte Excel XP. Habt ihr Tipps wie ich die Abwärtskompatibilität gewährleisten kann?

Christian Seehase 15. Jul 2007 14:27

Re: Excel: Workbooks.Open schlägt fehl
 
Moin Mamphil,

also ich hab' das mit D7 zuletzt so gemacht, dass ich die entsprechenden Objekte zur Laufzeit erstellt, und nicht auf das Formular gelegt habe (bzw. einmal, um die benötigten Units eingebunden zu bekommen ;-)).
So ist es recht einfach statt ExcelXP Excel2000 (oder gar Excel97) einzubinden.

Mamphil 15. Jul 2007 17:09

Re: Excel: Workbooks.Open schlägt fehl
 
Hi,

vielen Dank für deinen Tipp! Damit konnte ich das Problem lösen:

Falls jemand irgendwann einmal dasselbe Problem hat:
Ich habe das ExcelApplication-Element aus dem Formular gelöscht, im uses-Block "ExcelXP" in "Excel2000" geändert, eine globale Variable XLApp: TExcelApplication; definiert und vorm "XLApp.Connect;"-try-except-Block folgenden Block eingebaut:
Delphi-Quellcode:
try
  XLApp := TExcelApplication.Create(self);
except
  MessageDlg('Excel-Application konnte nicht erzeugt werden!', mtError, [mbOK], 0);
  Application.Terminate;
end;
Mamphil


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 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