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 ' 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 Dieser Tipp wurde bereits 23.743 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |