Hallo Andre,
kopiere den gesamten code. mit der funktion kannst du(vorrausgesetzt du hast office2000) den excel-installationspfad aus der registry auslesen…
anschliessend benutzt du die „shell“ um excel und deine datei zu öffnen
gruß
rasta
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, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib „advapi32.dll“ (ByVal hKey As Long) As Long
'RegOpenKeyEx hKey-Konstanten
Private Const HKEY_USERS = &H80000003 'Current Users Hauptschlüssel
Private Const HKEY_PERFORMANCE_DATA = &H80000004 '(Win NT/2000) Performance Data schlüssel
Private Const HKEY_LOCAL_MACHINE = &H80000002 'Local Machine Schlüssel
Private Const HKEY_DYN_DATA = &H80000006 '(Win 95/98) Dynamisch Daten
Private Const HKEY_CURRENT_USER = &H80000001 'Current User Schlüssel
Private Const HKEY_CURRENT_CONFIG = &H80000005 'Current Config Schlüssel
Private Const HKEY_CLASSES_ROOT = &H80000000 'Classes Root Schlüssel
'RegOpenKeyEx samDesired-Konstanten
Private Const KEY_ALL_ACCESS = &HF003F 'Alle arten von Zurgiffen
Private Const KEY_CREATE_LINK = &H20 'Erlaubnis zum Symbolischen erstellen von Links
Private Const KEY_CREATE_SUB_KEY = &H4 'Erlaubnis zum unterschlüssel erstellen
Private Const KEY_ENUMERATE_SUB_KEYS = &H8 'Erlaubnis zum Enumerieren der Unterschlüssel
Private Const KEY_NOTIFY = &H10 'Erlaubnis über änderungen benachritet zu werden
Private Const KEY_QUERY_VALUE = &H1 'Erlaubnis zum Auslesen von Unterschlüssel Daten
Private Const KEY_READ = &H20019 'Lese zugriff
Private Const KEY_SET_VALUE = &H2 'Erlaubnis zum Schreiben von werten in Unterschlüsseln
Private Const KEY_WRITE = &H20006 'Schreib zugriff
'RegQueryValueEx lpType-Konstanten
Private Const REG_BINARY = 3 'Eine Bytefolge
Private Const REG_DWORD = 4 'Ein 32-Bit Integer wert (Little Endian)
Private Const REG_DWORD_BIG_ENDIAN = 5 'Ein 32-Bit Integer (Big Endian)
Private Const REG_EXPAND_SZ = 2 'Ein VBNullChar Terminierter String der Umgebungsvariablen enthält
Private Const REG_LINK = 6 'Ein Unicode symbolischer Link
Private Const REG_MULTI_SZ = 7 'Eine Serie von Strings, jedes getrennt mit einem VBNullChar-Zeichen und das ende mit 2 VBNullChar-Zeichen
Private Const REG_NONE = 0 'Keine Daten
Private Const REG_RESOURCE_LIST = 8 'Eine liste von Ressourcen in einer Ressourcen Map
Private Const REG_SZ = 1 'Ein VBNullChar-Zeichen Terminierter String
Public Function instExcel()
Dim Retval As Long, hKey As Long
Dim TmpSNum As String * 255
'Registryeintrag Öffnen
Retval = RegOpenKeyEx(HKEY_LOCAL_MACHINE, „Software\Microsoft\Office\9.0\excel\installroot“, 0&, KEY_READ, hKey)
If Retval 0 Then
MsgBox „Der Registryeintrag konnte nicht geöffnet werden.“
Exit Function
End If
'Wert auslesen
Retval = RegQueryValueEx(hKey, „Path“, 0, REG_SZ, ByVal TmpSNum, Len(TmpSNum))
If Retval 0 Then
MsgBox „Der Registryeintrag konnte nicht gelesen oder gefunden werden.“
Exit Function
End If
instExcel = Left$(TmpSNum, InStr(1, TmpSNum, vbNullChar) - 1)
'Registry wieder schließen
Retval = RegCloseKey(hKey)
End Function
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]