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

https://www.vbarchiv.net
Rubrik: System/Windows   |   VB-Versionen: VB.NET24.01.06
Office (-Komponente) installiert? (VB.NET)

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

Autor:   Dieter OtterBewertung:  Views:  19.574 
www.tools4vb.deSystem:  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 tun beide nachfolgenden Funktionen. Mit der Funktion OfficeInstallPath lässt sich das Installationsverzeichnis der angegebenen Office-Version ermitteln. Gibt die Funktion einen "Leerstring" zurück, ist die Office-Version nicht installiert. Die Funktion OfficeAppInstalled hingegen prüft, ob eine bestimmte Office-Komponente (bspw. Access oder Word) installiert ist.

Imports Microsoft.Win32
 
...
 
' Aufzählung: Office-Komponenten
Public Enum MSOfficeComponent
  MSAccess = 0
  MSExcel = 1
  MSOutlook = 2
  MSPowerPoint = 3
  MSWord = 4
End Enum
 
' Aufzählung Office-Version
Public Enum MSOfficeVersion
  Office95 = 7
  Office97 = 8
  Office2000 = 9
  OfficeXP = 10
  Office2003 = 11
End Enum
' Prüfen, ob bestimmte Office-Komponente, wie MS-Access oder 
' MS-Word installiert ist
Public Function OfficeAppInstalled(ByVal nComponent As MSOfficeComponent)
  ' Registry-SubKey
  Dim sKey As String = Choose(nComponent + 1, "Access.Application", _
    "Excel.Application", "Outlook.Application", "PowerPoint.Application", _
    "Word.Application")
 
  ' Registry öffnen (Zweig ClassesRoot)
  Dim oReg As RegistryKey = Registry.ClassesRoot
 
  ' Wenn Unterzweig existiert, ist die Office-Komponente vorhanden
  ' andernfalls nicht
  Return Not oReg.OpenSubKey(sKey) Is Nothing
 
  ' Registry schließen
  oReg.Close()
End Function
' Prüfen, ob bestimmte Office-Version vorhanden und ggf. den 
' Installationspfad zurückgeben
Public Function OfficeInstallPath(ByVal nVersion As MSOfficeVersion) As String
  ' Registry-SubKey
  Dim sKey As String = "SOFTWARE\Microsoft\Office\" & CStr(nVersion) & ".0\Common\InstallRoot"
  Dim sPath As String = ""
 
  ' Registry öffnen (Zweig LocalMachine)
  Dim oReg As RegistryKey = Registry.LocalMachine.OpenSubKey(sKey)
  If Not oReg Is Nothing Then
    ' Path-Wert lesen
    sPath = oReg.GetValue("Path", "")
    If sPath.Length = 0 Then
      ' "Path" nicht gefunden
      ' 2. Versuch: "OfficeBin"
      sPath = oReg.GetValue("OfficeBin", "")
    End If
  End If
  Return sPath
End Function

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

Dim sPath As String = OfficeInstallPath(MSOfficeVersion.OfficeXP)
If sPath.Length > 0 Then
  MsgBox("Office XP ist installiert: Pfad " & sPath)
Else
  MsgBox("Office XP ist nicht installiert!")
End If

Sie möchten wissen, ob MS-Access auf dem System vorhanden ist?

If OfficeAppInstalled(MSOfficeComponent.MSAccess) Then
  MsgBox("Ja, MS-Access ist installiert.")
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.