PPT97: How to Auto Load a PowerPoint Add-In

ID: Q182842

The information in this article applies to:

IMPORTANT: This article contains information about editing the registry. Before you edit the registry, make sure you understand how to restore it if a problem occurs. For information about how to do this, view the "Restoring the Registry" Help topic in Regedit.exe or the "Restoring a Registry Key" Help topic in Regedt32.exe.

SUMMARY

When you load a Microsoft PowerPoint add-in by using the Add-Ins dialog box, the add-in remains loaded until you exit PowerPoint. However, PowerPoint does not automatically load that add-in every time you start PowerPoint.

This article describes several ways you can create registry entries for a PowerPoint add-in or wizard so that it loads automatically when you start PowerPoint.

MORE INFORMATION

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft Support professionals can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific needs. If you have limited programming experience, you may want to contact the Microsoft fee-based consulting line at (800) 936-5200. For more information about the support options available from Microsoft, please see the following page on the World Wide Web:

   http://www.microsoft.com/support/supportnet/refguide/default.asp

There are two locations in the registry where you can register a PowerPoint add-in so that it will load automatically: HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE.

Method 1: Use the AutoLoad Property to Register the Add-in in HKEY_CURRENT_USER

   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

Method 2: Use the Registry API to Register the Add-in in HKEY_LOCAL_MACHINE

The RegisterAddin() function adds the appropriate registry entries for an add-in.

   ' **********************************************************************
   '
   '  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

Method 3: Create a Registration (.Reg) File for Your Add-In

WARNING: Using Registry Editor incorrectly can cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that problems resulting from the incorrect use of Registry Editor can be solved. Use Registry Editor at your own risk.

For information about how to edit the registry, view the "Changing Keys And Values" Help topic in Registry Editor (Regedit.exe) or the "Add and Delete Information in the Registry" and "Edit Registry Data" Help topics in Regedt32.exe. Note that you should back up the registry before you edit it. If you are running Windows NT, you should also update your Emergency Repair Disk (ERD).

You can use a registration (.reg) file rather than code to register your add-in. The following sample text can be used to register an add-in

   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.

Method 4: Make the Entries in the Registry by Hand

You can open the registry and add the entries for your add-in by hand. For information about how to edit the registry, view the "Changing Keys And Values" Help topic in Registry Editor (Regedit.exe) or the "Add and Delete Information in the Registry" and "Edit Registry Data" Help topics in Regedt32.exe. Note that you should back up the registry before you edit it. If you are running Windows NT, you should also update your Emergency Repair Disk (ERD).

REFERENCES

For more information about getting help with Visual Basic for Applications, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q163435
   TITLE     : VBA: Programming Resources for Visual Basic for 
               Applications

Additional query words: kbmacro vba ppt vbe kbcode win32 auto_open
Keywords          : kbcode kbdta kbdtacode OffVBA kbmacroexample kbpptvba 
Version           : WINDOWS:97
Platform          : WINDOWS
Hardware          : x86
Issue type        : kbhowto

Last Reviewed: May 17, 1999