Registry Keys
Installation
Need to add a registry key
HKCU\Software\Microsoft\Office\12.0\Excel\Options\ OPEN1 - /R "MyXLL.dll"
If the add-in is not in the default add-ins folder then the full path must be provided
The Excel-DNA runtime contains a small loader (the .XLL) that loads the .NET runtime, then checks the configuration (.dna) file and accordingly loads the managed assembly.
The managed assemblies are then inspected using the .NET Reflection API and the appropriate methods are registered.
Upgrading from 32 bit to 64 bit
Const ISIT_32_OR_64_PATH = "HKLM\Software\Microsoft\Office\16.0\Outlook\"
Const EXCEL_ADDIN_PATH = "HKCU\Software\Microsoft\Office\16.0\Excel\Options\"
Const ADDIN_REG_VALUE_32 = "/R ""C:\Program Files (x86)\Better Solutions\ExcelDNALibrary-AddIn.xll """
Const ADDIN_REG_VALUE_64 = "/R ""C:\Program Files (x86)\Better Solutions\ExcelDNALibrary-AddIn64.xll """
Function RegistrationKeyExists(key)
On Error Resume Next
objShell.RegRead (key)
If Err = 0 Then
RegistrationKeyExists = True
Else
RegistrationKeyExists = False
End If
End Function
Function RegistrationKeyValueGet(name)
On Error Resume Next
Dim value
value = objShell.RegRead(name)
If Err = 0 Then
RegistrationKeyValueGet = value
Else
RegistrationKeyValueGet = ""
End If
End Function
Function RegistrationKeyValueSet(name, value)
On Error Resume Next
objShell.RegWrite name, value, "REG_SZ"
If Err = 0 Then
RegistrationKeyValueSet = True
Else
RegistrationKeyValueSet = False
End If
End Function
Function RegistrationKeyValueDelete(name)
On Error Resume Next
objShell.RegDelete name
If Err = 0 Then
RegistrationKeyValueDelete = True
Else
RegistrationKeyValueDelete = False
End If
End Function
Dim objShell
Dim ADDIN_REG_VALUE
Dim BIT3264
Dim count
Dim value
Dim exists
Dim exists_32bit
Dim success
Set objShell = CreateObject("WScript.Shell")
WScript.Echo "Excel-DNA Upgrade Script"
WScript.Echo "Checking if Office is 32bit or 64bit
If RegistrationKeyExists(ISIT_32_OR_64_PATH) Then
BIT3264 = RegistrationKeyValueGet(ISIT_32_OR_64_PATH & "Bitness")
WScript.Echo "32or64 - " & BIT3264
If BIT3264 = "x64" Then
WScript.Echo "64 bit Office"
End If
If BIT3264 = "x32" Then
WScript.Echo "32 bit Office"
End If
End If
.// Check OPEN
If RegistrationKeyExists(EXCEL_ADDIN_PATH) Then
value = RegistrationKeyValueGet(EXCEL_ADDIN_PATH & "OPEN")
If Len(value) > 0 Then
WScript.Echo "OPEN exists, its value is - " & value
If (value = ADDIN_REG_VALUE_32) Then
WScript.Echo "OPEN - 32 bit formula add-in found"
If BIT3264 = "x64" Then
WScript.Echo "OPEN - Changing it to 64 bit formula add-in"
success = RegistrationKeyValueSet(EXCEL_ADDIN_PATH & "OPEN" & count, ADDIN_REG_VALUE_64)
64bitexists = true
End If
End If
If (value = ADDIN_REG_VALUE_64) Then
WScript.Echo "OPEN - 64 bit formula add-in found"
If BIT3264 = "x32" Then
WScript.Echo "OPEN - Changing it to 32 bit formula add-in"
success = RegistrationKeyValueSet(EXCEL_ADDIN_PATH & "OPEN" & count, ADDIN_REG_VALUE_32)
32bitexists = true
End If
End If
End If
.// Check OPEN1 ... OPEN20
For count = 1 To 20
value = RegistrationKeyValueGet(EXCEL_ADDIN_PATH & "OPEN" & count)
WScript.Echo "OPEN" & count & " = " & value
If (value = ADDIN_REG_VALUE_32) Then
WScript.Echo "OPEN" & count & " - 32 bit formula add-in found"
If BIT3264 = "x64" Then
If (64bitexists = False) Then
WScript.Echo "OPEN" & count & " - Changing it to 64 bit add-in"
success = RegistrationKeyValueSet(EXCEL_ADDIN_PATH & "OPEN" & count, ADDIN_REG_VALUE_64)
64bitexists = true
Else
WScript.Echo "OPEN" & count & " - 64 bit registration already exists, so remove"
success = RegistrationKeyValueDelete(excelAddinPath & "OPEN" & count)
End If
End If
If BIT3264 = "x32" Then
If (32bitexists = False) Then
WScript.Echo "OPEN" & count & " - Changing it to 32 bit add-in"
success = RegistrationKeyValueSet(EXCEL_ADDIN_PATH & "OPEN" & count, ADDIN_REG_VALUE_32)
32bitexists = true
Else
WScript.Echo "OPEN" & count & " - 32 bit registration already exists, so remove"
success = RegistrationKeyValueDelete(excelAddinPath & "OPEN" & count)
End If
End If
End If
If (value = ADDIN_REG_VALUE_64) Then
WScript.Echo "OPEN" & count & " - 64 bit formula add-in found"
If BIT3264 = "x64" Then
If (64bitexists = False) Then
WScript.Echo "OPEN" & count & " - Changing it to 64 bit add-in"
success = RegistrationKeyValueSet(EXCEL_ADDIN_PATH & "OPEN" & count, ADDIN_REG_VALUE_64)
64bitexists = true
Else
WScript.Echo "OPEN" & count & " - 64 bit registration already exists, so remove"
success = RegistrationKeyValueDelete(excelAddinPath & "OPEN" & count)
End If
End If
If BIT3264 = "x32" Then
If (32bitexists = False) Then
WScript.Echo "OPEN" & count & " - Changing it to 32 bit add-in"
success = RegistrationKeyValueSet(EXCEL_ADDIN_PATH & "OPEN" & count, ADDIN_REG_VALUE_32)
32bitexists = true
Else
WScript.Echo "OPEN" & count & " - 32 bit registration already exists, so remove"
success = RegistrationKeyValueDelete(excelAddinPath & "OPEN" & count)
End If
End If
End If
Next icount
End If
Set objShell = Nothing
© 2024 Better Solutions Limited. All Rights Reserved. © 2024 Better Solutions Limited TopPrevNext