Rubrik: System/Windows | VB-Versionen: VB.NET | 24.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 Otter | Bewertung: | Views: 19.574 |
www.tools4vb.de | System: 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