1

To enable compatibility with an existing XLL, I want to identify the equivalent XLL in the manifest of my Excel add-in. My existing add-in is using XLL technology, but it does this by using 3rd party libraries of Add-In Express. So in my case the custom functions also are contained in the dll which also contains the COM UI part of the add-in. So I have no physical xll file.

Since I found the information that for equivalent COM add-ins, Excel searches in the following locations for a matching ProgId

  • Computer\HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins
  • Computer\HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Excel\Addins

What is the respective location where Excel is looking for matching XLL files?

I would like to have a look what Add-In-Express adds there, to then use it to reference it as FileName for the XLL equivalent.

Developer
  • 186
  • 3
  • 19

3 Answers3

1

To enable XLL compatible custom functions for your Office-JS-Excel add-in, add the respective EquivalentAddin tag to your manifest as described in the documentation.

https://learn.microsoft.com/en-us/office/dev/add-ins/excel/make-custom-functions-compatible-with-xll-udf

The declaration of an EquivalentAddin of type XLL enables compatibility. If there are XLL custom functions, they are matched by function name only, there is no matching to a specific XLL. So it doesn't matter what you put into the FileName tag.

Developer
  • 186
  • 3
  • 19
0

The ProdId is the key for matching. You could just put a placeholder name as the file name and it should work.

Please notice it is important that the functions of a real XLL should NOT get registered and loaded before compatible functions are registered. Otherwise following compatible functions cannot override existing XLL functions. Real XLL functions always take precedence over compatible ones.

ruoyingl
  • 121
  • 3
  • Okay, the documentation (https://learn.microsoft.com/en-us/office/dev/add-ins/excel/make-custom-functions-compatible-with-xll-udf) explicitly tells to use the filename as matching criteria for XLL equivalents, but okay, I'll try. – Developer Nov 29 '19 at 06:05
  • But how should I (especially when running productively on a clients computer) ensure in which order two different kinds of add-ins are registered and loaded by Excel? Shouldn't Excel take care of that itself? – Developer Nov 29 '19 at 06:14
  • And how do I recognize what is exactly the case? I have a XLL function without auto completion, but auto completion is provided by the XLL compatible version. So if I execute the function and it returns the result of the XLL (OJS returns a different result to distinguish which one was called) then I know the XLL was called. But what way? I would guess, if auto completion is not available, XLL just won by default, there was no successful matching between it and the compatible function. If the equivalent tag matches I would expect auto completion AND the result of the XLL. Am I right? – Developer Nov 29 '19 at 10:19
  • While testing using an XLL (created using ExcelDna) for me now it seems, that as soon as an equivalent tag is available for type XLL, XLL functions seem to replace add-In-functions, matching them just by function name (not case sensitive), no matter how or what is configured to match a certain XLL add-In. So maybe that's what you tried to explain in your post. – Developer Nov 29 '19 at 12:06
  • I'm looking forward to getting my conclusions confirmed or refuted. Thanks in advance. – Developer Nov 29 '19 at 12:08
  • Yes, Excel will take care which one should be picked. Once you add equivalent tag, XLL function will be used in Excel Win32 which supports XLL functions. The matching is based on function name, not the XLL add-in file name. – ruoyingl Dec 03 '19 at 09:30
  • Thanks, okay so neither ProdId nor FileName is needed to replace XLL compatible functions by actual XLL functions. But them the documentation (https://learn.microsoft.com/en-us/office/dev/add-ins/excel/make-custom-functions-compatible-with-xll-udf#specify-equivalent-xll-in-the-manifest) should be corrected. – Developer Dec 03 '19 at 13:40
  • No, the ProdId should be needed. Let me double confirm. – ruoyingl Dec 04 '19 at 03:21
  • Can you confirm now? Because for me it seems to work with not matching filename and no ProdId – Developer Dec 09 '19 at 10:42
  • Sorry for the late response. I confirmed, you are correct. – ruoyingl Dec 12 '19 at 07:09
0

Is Excel->File->Options->Add-ins the right place to view and manage Microsoft Office Add-ins, including COM Add-in and Excel-Addin?

xiaochun
  • 114
  • 5
  • thx, of course I know about that dialog. It's just, since I found this very specific information about the place to look for ProgIds for COM add-ins, I wanted to know whether there is such a specific info for XLL. Is the file name, at the end of the values in the location column in the dialog you mentioned, the file name to match?And if this name doesn't match, there is no way to match by name? – Developer Nov 29 '19 at 06:28
  • Suppose you are asking for the match XLL in Excel custom function equivalent XLL case. Yes you can use the file name at the end of the values in the location column in the dialog in equivalent XLL case. – xiaochun Dec 19 '19 at 01:22