Я пытаюсь проверить, какая версия Navisworks установлена на компьютере пользователя. Я использовал пример из этой темы и изменил Найти ключ реестра с помощью Excel VBA
Function ReadRegistry(RootKey, Key As String, Value As String, Optional RegType As Integer = 32) As String
Dim oCtx, oLocator, oReg, oInParams, oOutParams
Set oCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
oCtx.Add "__ProviderArchitecture", RegType
Set oLocator = CreateObject("Wbemscripting.SWbemLocator")
Set oReg = oLocator.ConnectServer("", "root\default", "", "", , , , oCtx).Get("StdRegProv")
Set oInParams = oReg.Methods_("GetStringValue").InParameters
oInParams.hDefKey = RootKey
oInParams.sSubKeyName = Key
oInParams.sValueName = Value
Set oOutParams = oReg.ExecMethod_("GetStringValue", oInParams, , oCtx)
ReadRegistry = oOutParams.sValue
Конечная функция
Sub NavisworksVersion()
Const HKEY_LOCAL_MACHINE = &H80000002
MsgBox ReadRegistry(HKEY_LOCAL_MACHINE, "Software\Autodesk\Navisworks API Runtime\18\Navisworks Manage", "Path")
Конец сабвуфера
Код работает до ReadRegistry в функции, где выдает ошибку Недопустимое использование Null
Любая помощь приветствуется