Installierte Word Version prüfen

  • Hallo


    Ich benutze Auto IT recht kurze Zeit und bräuchte mal einen Tip wie ich in einem script aus der Registry die Word Version herauslesen kann um dann im Script die Vorlagen Pfade zu setzen. Da ja nach Version die Registry Einträge für die Vorlagenpfade anders sind, muss ich vorher prüfen, welche Word Version installiert ist.

    Ich denke es sollte nicht so schwer sein aber ich komme leider irgendwie nicht drauf was ich herauslesen könnte.


    schonmal Danke in Voraus

    • Offizieller Beitrag

    Nicht über Registry, so ists einfacher:

    [autoit]

    MsgBox(0, 'Version MS Word', WordVersion())
    Func WordVersion()
    Local $objWord = ObjCreate("Word.Application")
    If Not IsObj($objWord) Then Return 'Kein Word installiert!'
    Return $objWord.Version
    EndFunc

    [/autoit]

    Kleiner Nachteil: Sollten auf dem Zielrechner mehrere Versionen installiert sein, ist nicht sicher, dass das Word-Objekt mit der aktuellen Version erstellt wird - somit ist auch die Versionsinfo nicht korrekt. Dann bleibt nur der Weg über die Registry.

  • das ging ja schnell... :)


    ok das sollte reichen ich auf den Rechnern ist nur eine Version installiert allerdings nicht immer die gleiche. somit muss ich jetzt nur noch schauen wie ich den Benutzervorlagen Pfad ändere, warscheinlich löse ich das mit RegWrite oder gibt es da auch eine bessere Lösung.

  • Die Pfade stehen dort drin aber ich muss jetzt das prüfen noch mit der Variablen verknüpfen warscheinlich ist da so noch nicht ganz korrekt ... :S


    if $objWord.Version = 11 Then RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\General", "UserTemplates", "REG_SZ", "\\linux\daten\p32\p32dot")
    if $objWord.Version = 10 Then RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Common\General", "UserTemplates", "REG_SZ", "\\linux\daten\p32\p32dot")
    if $objWord.Version = 9 Then RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\General", "UserTemplates", "REG_SZ", "\\linux\daten\p32\p32dot")

    • Offizieller Beitrag
    Zitat

    Die Pfade stehen dort drin..


    :D Ich war in HKLM statt in HKCU gelandet.

    so sollte es klappen:

    Spoiler anzeigen
    [autoit]

    Global $key = 'HKCU\SOFTWARE\Microsoft\Office\'
    Global $version = WordVersion()
    Global $path = "\\linux\daten\p32\p32dot"

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

    Switch $version
    Case 9
    RegWrite ($key & "9.0\Common\General", "UserTemplates", "REG_SZ", $path)
    Case 10
    RegWrite ($key & "10.0\Common\General", "UserTemplates", "REG_SZ", $path)
    Case 11
    RegWrite ($key & "11.0\Common\General", "UserTemplates", "REG_SZ", $path)
    EndSwitch

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

    Func WordVersion()
    Local $objWord = ObjCreate("Word.Application")
    If Not IsObj($objWord) Then Return 'Kein Word installiert!'
    Return $objWord.Version
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Scheeeen :D
    Aber eines hatte ich vergessen, das Word-Objekt muß natürlich beendet werden, sonst hast du eine "Prozeßleiche" am laufen :rofl:

    [autoit]

    Func WordVersion()
    Local $objWord = ObjCreate("Word.Application")
    If Not IsObj($objWord) Then Return 'Kein Word installiert!'
    $objWord.Quit ; Word-Objekt schließen
    Return $objWord.Version
    EndFunc

    [/autoit]