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