![]() |
Re: Herausfinden, welche Excelversion genutzt werden kann
Hallo,
Also es funktioniert nicht so ganz. Also bei mir funktionierts (D2k9), aber TurboDelphi meckert: Zitat:
Delphi-Quellcode:
Wenn man das aber "aufteilt" also etwa so:
function GibExcelVersion : TExcelVersion;
var tmp : TGUID; begin // Test auf MSO 2k3 / MSO 2k7 Result := evKeine; if Succeeded(CLSIDFromProgID(PWideChar('Excel.Application.11'), tmp)) then Result := ev2003 else if Succeeded(CLSIDFromProgID(PWideChar('Excel.Application.12'), tmp)) then Result := ev2007; end;
Delphi-Quellcode:
Das liefert keinen Fehler, aber das liefert auch kein Succeeded.
var
s : string; pw : PWideChar; i : Integer; begin s := 'Excel.Application.11'; pw := PWideChar(s); i := CLSIDFromProgID(pw, tmp); if Succeeded(i) then Ich muss dazu sagen, dass die aufgeteilte Version so sein sollte, aber ich kann dafür meine Hand leider nicht ins Feuer legen :D MfG xZise |
Re: Herausfinden, welche Excelversion genutzt werden kann
Hallo,
also ich mach das immer so:
Delphi-Quellcode:
Der Code liefert in der Variable excel2007 "true",
excel2007:=false;
try Excel:=CreateOleObject('excel.Application'); if Excel.Version = '12.0' then excel2007:=true; Excel.quit except excole:=false; end; wenn Excel2007 gestartet werden konnte. Mfg Markus |
Re: Herausfinden, welche Excelversion genutzt werden kann
Hallo Fabian,
warum gehst Du nicht über die Registry ? Dazu nutze ich diese Tabelle :
Delphi-Quellcode:
Für MSO XP und höher brauchst Du diese beiden Registry Key:
{-----------------------------------------------------------------}
{- Programm - Release Ver - SP 1 - SP 2 - SP 3 -} {-----------------------------------------------------------------} {- MS Office 2000 - 9.0.2 - 9.0.3 - 9.0.4 - 9.0.6 -} {- MS Office XP - 10.0.2 - 10.0.3 - 10.0.4 - 10.0.6 -} {- MS Office 2003 - 11.0.5 - 11.0.6 - 11.0.7 - 11.0.8 -} {- MS Office 2007 - 12.0.4 - 12.0.6215 - 12.0.6425 - -} {-----------------------------------------------------------------} Zitat:
Bei Office 2000 musst Du die FileVersion von der Datei mso9.dll auslesen. |
Re: Herausfinden, welche Excelversion genutzt werden kann
Okay über die Registry könnte ich auch gehen. Aber muss ich beide Einträge überprüfen?
Und eine theoretische Frage: Was ist wenn zwar Excel nicht installiert ist, aber das OleObjekt? MfG xZise |
Re: Herausfinden, welche Excelversion genutzt werden kann
Zitat:
|
Re: Herausfinden, welche Excelversion genutzt werden kann
Naja aber in der Theorie könnte doch auch eine andere Office Suite das Objekt zur Verfügung stellen oder?
MfG xZise |
Re: Herausfinden, welche Excelversion genutzt werden kann
Ich kenne keine andere Office-Suite, welches eine Excel-Com-Klasse bereitstellt. Und wenn eine das machen würde, müsste die sich ja kompatibel verhalten.
|
Re: Herausfinden, welche Excelversion genutzt werden kann
Zitat:
|
Re: Herausfinden, welche Excelversion genutzt werden kann
Zitat:
Allerdings ist die Registry eine Abstraktionsebene tiefer. Es ist softwaretechnisch eine Ungeschicktheit eine tiefere Abstraktionsebene als nötig zu wählen. Man möchte ja nicht wissen, was in der Registry steht, sondern welche COM-Klassen zur Verfügung stehen.
Delphi-Quellcode:
function ClassIDExists(classID:WideString):Boolean;
var tmp : TGUID; begin Result := Succeeded(CLSIDFromProgID(PWideChar(classID), tmp)); end; function GibExcelVersion : TExcelVersion; begin // zuerst prüfen, ob Excel 2007 vorhanden - Reihenfolge ist wichtig if ClassIDExists('Excel.Application.12') then Result := ev2007; else if ClassIDExists('Excel.Application.11') then Result := ev2003 else Result := evKeine; end; |
Re: Herausfinden, welche Excelversion genutzt werden kann
Hallo sx2008,
aber da gibt es das Problem, das er es nicht kompilieren kann. Zumindest unter Turbo Delphi Explorer. Mit Delphi 2009 kann ich das kompilieren. Aber wenn man das aufteilt (siehe oben), dann kompiliert er zwar, meldet dann aber das weder MSO 2007 noch MSO 2003 installiert ist (also nicht bei mir, sondern bei einem Freund der das mitentwickelt). MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz