共用方式為


VB6 based add-ins may fail to work in Office 2013

VB6 based add-ins have a dependency on the Add-In Designer Object Library (msaddndr.dll), which is no longer shipped with Office 2013 (https://technet.microsoft.com/en-us/library/cc178954.aspx see under OSF section). If the add-in setup project did not include this DLL, then the Add-in registration would fail.

To resolve this issue :-

1. The add-in developer can include the msaddndr.dll file to the setup project, and redeploy the add-in. If VB6 Package and Deployment wizard was used, this can be done as shown here :- https://support.microsoft.com/kb/192136. And yes, this file can be redistributed.

Before deployment, make sure the VB6 developer machine has VB6 SP6 installed :-
https://www.microsoft.com/en-us/download/details.aspx?id=5721
and has the latest version of the msaddndr.dll from this cumulative update:-
https://support.microsoft.com/kb/957924

2. If there is no option for the setup project to be rebuilt to include this file, then this file can be copied from a machine which has earlier version of Office or VB6 installed and registered using regsvr32 command. You can then re-run the add-in setup. The msaddndr.dll file can usually be found at this location :-
C:\Program Files\Common Files\DESIGNER
or in case of 64 bit OS under
C:\Program Files (x86)\Common Files\DESIGNER

For the long term, if you are the developer of the add-in, please consider moving to newer supported ways of writing add-ins, such as Apps for Office or VSTO.

Update: A new KB article has been published about this issue :- A custom add-in that uses interfaces in the Msaddndr.dll file does not work in Office 2013

Comments

  • Anonymous
    May 13, 2013
    Does this also apply to C++ COM add-ins which import this library as well?

  • Anonymous
    May 13, 2013
    Hi Dwight, No, it doesn't apply to a C++ COM add-in which does "# import" for the msaddndr.dll, since the dll/tlb is used during the compile and link time and there is no runtime requirement for this DLL. This issue is specific to VB6 add-ins which depend on it during runtime. HTH, Praveen

  • Anonymous
    April 02, 2014
    Hi, I used the second solution, but It has worked only one time. After the reboot the addin has stopped working. Why? thank you David

  • Anonymous
    April 02, 2014
    Hi David, I can't think of a reason for that to work only first time. It may be that it is being disabled by Office. Please check the LoadBehavior. You can refer to this post to t-shoot:- blogs.msdn.com/.../troubleshooting-com-add-in-load-failures.aspx Thanks, Praveen.

  • Anonymous
    April 02, 2014
    The addin is always enable. I check the LoadBehavior (value is 3), but it only works the first time. If I close and reopen Excel it is enable but It  stops working ( LoadBehavior =3). To make it work again I have to remove it from the COM addins, restart and insert the addin again. thanks for the reply David