Ist Excel installiert?

  • Hallo :)
    ich brauche für die Installation eines anderen Programms die Information ob Excel installiert ist.

    Leider weiss ich nicht, welchen HKLM Pfad ich überprüfen muss / soll... :(
    Irgendwie stell ich mich dabei ganz schön doof an.

    Funktioniert hat es mit

    [autoit]

    RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\12.0\Excel\", "ExcelName")
    RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\11.0\Excel\", "ExcelName")

    [/autoit]


    Allerdings nur, wenn der User bereits Excel am laufen hatte.

    Ich möchte möglichst einfach prüfen "ist excel installier? true oder false" und krieg es nicht gebacken (nach über 5 stunden tüfteln).
    *suche nach hilfe*

    Gruß Scorp

    Einmal editiert, zuletzt von DJScorpion (12. September 2008 um 13:04)

  • Ich würde es mit dem Schlüssel "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Excel" bzw. "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Excel" versuchen.
    Ich kann es zwar nicht testen, aber der 'Ordner' Excel wird wahrscheinlich nicht da sein, wenn Excel nicht installiert ist.
    Dein Schlüssel bezieht sich auf den angemeldeten User, dieser auf die ganze Station.

    Gruß funkey

  • Ja ich weiss. Das hab ich doch oben bereits geschrieben.
    Leider funktioniert das, was du geschrieben hast komischer weise genauso wenig. Da ich bei einem Client da mal nachgeschaut hab hab ich festgestellt, dass dort der office ordner klein geschrieben wurde!!!
    Also muss ich das schonmal doppelt überprüfen.

    Jetzt sieht mein Testcode so aus:

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    $Excel2007gr = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Excel\InstallRoot", "Path")
    $Excel2007kl = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\office\12.0\Excel\InstallRoot", "Path")
    $Excel2003gr = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Excel\InstallRoot", "Path")
    $Excel2003kl = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\office\11.0\Excel\InstallRoot", "Path")

    [/autoit] [autoit][/autoit] [autoit]

    If $Excel2007gr == "Microsoft Excel" or $Excel2007kl == "Microsoft Excel" Then
    MsgBox(16, "Excel 2007", "Microsoft Excel 2007 ist installiert!")
    ElseIf $Excel2003gr <> "" or $Excel2003kl <> "" Then
    MsgBox(16, "Excel 2003", "Microsoft Excel 2003 ist installiert!")
    Else
    MsgBox(48, "Achtung", "Est ist kein Excel installiert!")
    EndIf

    Exit

    [/autoit]

    Hahah :D
    ----------------------
    EDIT!!!! ^^ Ich hab den Fehler gefunden und wieso mir angezeigt wurde ich hätte kein Excel drauf!
    Ich prüfe ja auf "Microsoft Excel" ..aber das war noch ein Überbleibsel aus der HKCU Überprüfung.

    Jetzt gehts.. (ich prüfe einfach auf die Existenz von "Path",...dann gehts.

  • Oder so?

    Spoiler anzeigen
    [autoit]


    If RegRead("HKCR\OWC9.spreadsheet", "") Then $ExcelLV = ObjCreate("OWC9.spreadsheet")
    If RegRead("HKCR\OWC10.spreadsheet", "") Then $ExcelLV = ObjCreate("OWC10.spreadsheet")
    If RegRead("HKCR\OWC11.spreadsheet", "") Then $ExcelLV = ObjCreate("OWC11.spreadsheet")
    If RegRead("HKCR\OWC12.spreadsheet", "") Then $ExcelLV = ObjCreate("OWC12.spreadsheet")

    [/autoit]
    [autoit][/autoit]
    • Offizieller Beitrag

    Es geht auch ganz ohne Pfad, indem man einfach ein Excel-Objekt erstellt und testet, ob das erfolgreich war:

    [autoit]


    $oExcel = ObjCreate('OWC.Spreadsheet')
    If IsObj($oExcel) Then
    MsgBox(0, 'Ok', 'Excel-Objekt konnte erstellt werden.')
    Else
    MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')
    EndIf

    [/autoit]