Article ID: 182842
Article Last Modified on 10/11/2006
Sub Auto_Open()
' Get a reference to your add-in.
With Addins(Addins.Count)
' Create the registry key in HKEY_CURRENT_USER.
.Registered = msoTrue
' Set the AutoLoad value in the registry.
.AutoLoad = msoTrue
' Makes sure that the add-in is loaded.
.Loaded = msoTrue
End With
End Sub
' **********************************************************************
'
' FUNCTION:
' RegisterAddin()
'
' PURPOSE:
' The function registers an add-in in the registry.
'
' ARGUMENTS:
' strBranch - This is the branch of the registry in which you
' want to register the PowerPoint add-in. This value can be LOCAL
' or L(for HKEY_LOCAL_MACHINE) or CURRENT or C ' (for
HKEY_CURRENT_USER).
'
' strAddinName - This is the name of your add-in.
'
' strAddinPath - This is the full path to your add-in.
'
' fAutoLoad - This is a boolean value you can use to set the
' AutoLoad property. If you specify TRUE, your add-in
' automatically loads every time PowerPoint is started.
'
' RETURNS:
' True - If the function worked.
' False - If the function failed for any reason.
'
' **********************************************************************
Function RegisterAddin( _
strBranch As String, _
strAddinName As String, _
strAddinPath, _
fAutoLoad As Boolean) As Boolean
' Turn on error trapping.
On Error GoTo RegAddinError
Err.Clear
' Create the variable used in the call to RegCreateKeyEx().
Dim lhkeyHive As Long
Dim strSubKey As String
Dim lhkey As Long
Dim lDisp As Long
Dim lReturnVal As Long
' Make the branch string all caps.
strBranch = UCase(strBranch)
' Determine which branch of the registry to use.
Select Case strBranch
Case Is = "LOCAL"
lhkeyHive = HKEY_LOCAL_MACHINE
Case Is = "L"
lhkeyHive = HKEY_LOCAL_MACHINE
Case Is = "CURRENT"
lhkeyHive = HKEY_CURRENT_USER
Case Is = "C"
lhkeyHive = HKEY_CURRENT_USER
Case Else
' Passed in the wrong parameter, so use HKEY_LOCAL_MACHINE
lhkeyHive = HKEY_LOCAL_MACHINE
End Select
' Create the SubKey string.
strSubKey = "Software\Microsoft\Office\8.0\PowerPoint\AddIns\" & _
strAddinName
' Create or open the registry key.
lReturnVal = RegCreateKeyEx( _
lhkeyHive, _
strSubKey, _
0, _
"", _
REG_OPTION_NON_VOLATILE, _
KEY_ALL_ACCESS, _
vbNullString, _
lhkey, _
lDisp)
' See if error occurred when opening key.
If (lReturnVal <> ERROR_SUCCESS Or lhkey = 0) Then
RegisterAddin = False
Exit Function
End If
'Add the path to the add-in to the registry.
lReturnVal = RegSetValueEx( _
lhkey, _
"Path", _
0&, _
REG_SZ, _
strAddinPath, _
Len(strAddinPath))
' See if an error occurred when writing the registry key.
If (lReturnVal <> ERROR_SUCCESS) Then
RegisterAddin = False
Exit Function
End If
' Add the AutoLoad key if needed.
If fAutoLoad = True Then
'Add the path to the add-in to the registry.
lReturnVal = RegSetDwordValueEx( _
lhkey, _
"AutoLoad", _
0, _
REG_DWORD, _
&HFFFFFFFF, _
4)
' See if an error occurred when writing the registry key.
If (lReturnVal <> ERROR_SUCCESS) Then
RegisterAddin = False
Exit Function
End If
End If
' Close the registry key.
lReturnVal = RegCloseKey(lhkey)
' See if error occurred when closing the registry key.
If (lReturnVal <> ERROR_SUCCESS) Then
RegisterAddin = False
Exit Function
End If
' All is well, so return true.
RegisterAddin = True
' Exit the sub so that the code does not flow into
' the error handler.
Exit Function
' Handle an add-in registration error.
RegAddinError:
RegisterAddin = False
' Close the registry key if it is still open.
If lhkey <> 0 Then
RegCloseKey lhkey
End If
End Function
Use the following syntax when calling the RegisterAddin() function:
If (RegisterAddin("l", "AddIn", "c:\Path", True) = True) Then
MsgBox "It worked"
Else
MsgBox "it did not work"
End If
REGEDIT4
[<key>\Software\Microsoft\Office\8.0\PowerPoint\AddIns\MyAddin]
"Path"="C:\\PPA_PATH\\MYADDIN.PPA"
"AutoLoad"=dword:ffffffff
where <key> is the registry key (either HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE) in which you want to register your add-in.
163435 VBA: Programming Resources for Visual Basic for Applications
Additional query words: kbmacro vba ppt vbe kbcode win32 auto_open
Keywords: kbcode kbdtacode kbhowto kbmacroexample kbprogramming KB182842