vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: System/Windows · Sonstiges   |   VB-Versionen: VB4, VB5, VB621.05.02
Welche Office-Version ist installiert?

Eine Funktion, mit der sich schnell prüfen lässt, ob eine bestimmte Office-Version installiert ist.

Autor:   Dieter OtterBewertung:  Views:  23.759 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Immer wieder taucht die Frage vor: "Wie kann ich ermitteln, welche Word-Version auf dem System installiert ist?", oder "Wie kann ich ermitteln, ob Microsoft Office 2000 installiert ist?"

Das ganze lässt sich schnell ermitteln, indem man in der Registry-Datenbank nachschaut. Und genau das tut nachfolgende Funktion. Als Rückgabewert erhalten Sie dann den Installationspfad. Ist die geforderte Office-Version nicht installiert, wird ein Leerstring zurückgegeben.

Fügen Sie nachfolgenden Code bitte vollständig in ein MODUL ein:

Option Explicit
 
' benötigte API-Deklarationen
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _
  Alias "RegOpenKeyExA" ( _
  ByVal hKey As Long, _
  ByVal lpSubKey As String, _
  ByVal ulOptions As Long, _
  ByVal samDesired As Long, _
  phkResult As Long) As Long
 
Private Declare Function RegQueryValueEx Lib "advapi32.dll" _
  Alias "RegQueryValueExA" ( _
  ByVal hKey As Long, _
  ByVal lpValueName As String, _
  ByVal lpReserved As Long, _
  lpType As Long, _
  ByVal lpData As String, _
  lpcbData As Long) As Long
 
Private Declare Function RegCloseKey Lib "advapi32.dll" ( _
  ByVal hKey As Long) As Long
 
' Konstanten
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const ERROR_SUCCESS = 0&
Private Const REG_SZ = 1
Private Const KEY_QUERY_VALUE = &H1
 
' Auflistung
Public Enum OfficeVersion
  Office95 = 7
  Office97 = 8
  Office2000 = 9
  OfficeXP = 10
End Enum
' Prüft, ob eine bestimmte Office-Version installiert
' ist und gibt ggf. den Installationspfad zurück
Public Function Office_InstallPath( _
  ByVal iVersion As OfficeVersion) As String
 
  Dim sBuffer As String
  Dim lhKeyOpen As Long
  Dim lResult As Long
  Dim lByte As Long
  Dim sKeyName As String
  Dim sPath As String
 
  ' Rückgabe-Puffer
  sBuffer = Space$(255)
 
  ' Registry-Zweig
  sKeyName = "SOFTWARE\Microsoft\Office\" & _
    CStr(iVersion) & ".0\Common\InstallRoot"
 
  ' Registry öffnen
  lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sKeyName, _
    0, KEY_QUERY_VALUE, lhKeyOpen)
  If lResult = ERROR_SUCCESS Then
 
    ' Wert lesen
    lResult = RegQueryValueEx(lhKeyOpen, "Path", 0, _
      REG_SZ, sBuffer, Len(sBuffer))
    If lResult <> ERROR_SUCCESS Then
      ' "Path" nicht gefunden
      ' 2. Versuch: "OfficeBin"
      lResult = RegQueryValueEx(lhKeyOpen, "OfficeBin", _
        0, REG_SZ, sBuffer, Len(sBuffer))
    End If
 
    If lResult = ERROR_SUCCESS Then
      ' OK - Wert gefunden
      If InStr(sBuffer, Chr$(0)) > 0 Then _
        sBuffer = Left$(sBuffer, InStr(sBuffer, Chr$(0)) - 1)
 
      sPath = RTrim$(sBuffer)
    Else
      sPath = ""
    End If
    RegCloseKey lhKeyOpen
  End If
 
  Office_InstallPath = sPath
End Function

Beispiel
Sie möchten wissen, ob Office97 auf dem System installiert ist - und wenn ja, in welchem Verzeichnis:

' Office97 vorhanden?
Dim sPath As String
sPath = Office_InstallPath(Office97)
 
If sPath <> "" Then
  MsgBox "JA, Office97 ist vorhanden: " & _
    vbCrLf & "Installationspfad: " & sPath
Else
  MsgBox "NEIN, Office97 ist nicht vorhanden!"
End If



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.