Dirk
Posts: 73
Joined: 2017-10-05
|
Hello,
we are using a COM Add-In (AddinModule) and XLL AddIn (ADXXLLModule) for Excel.
The XLL Add-In is only to register some XLL functions (UDF). We use currently adxregister to install the XLL user defined functions.
I learned that we can use ExcelApp.RegisterXLL to register XLL functions.
a) Which approach should we use to create UDFs?
b) After register XLL there XLL Add-In is show in the Add-In Manager for excel add-in. Is that important for having UDFs?
c) If I use ExcelApp.RegisterXLL no Add-in is show in the excel add-in manager, but the UDF are available. Is that correct?
d) Can I call ExcelApp.RegisterXLL in addition to installing the XLL Add-IN with adxregister?
best regards. |
|
Dmitry Kostochko
Add-in Express team
Posts: 2887
Joined: 2004-04-05
|
Hi Dirk,
a) Which approach should we use to create UDFs?
I would suggest using adxregistrator.exe for registering your Add-in Express based solutions including COM Add-ins, XLLs, UDFs and so on.
b) After register XLL there XLL Add-In is show in the Add-In Manager for excel add-in. Is that important for having UDFs?
It is the default behavior.
c) If I use ExcelApp.RegisterXLL no Add-in is show in the excel add-in manager, but the UDF are available. Is that correct?
I think yes, correct. The RegisterXLL method registers XLL only.
d) Can I call ExcelApp.RegisterXLL in addition to installing the XLL Add-IN with adxregister?
As I mentioned above, using adxregistrator.exe is the supported and recommended way. Of course, you can call the RegisterXLL method, but what for? Adxregistrator.exe has registered your XLL already, hasn't it? |
|
Dirk
Posts: 73
Joined: 2017-10-05
|
We have large problems with registering the XLL module with adxregister.
a) We have two add-ins in the list of installed add-ins but have only one product. This is confusing our customers.
b) In the following scenario it is not always possible to use adxregister:
- install com and xll add-in for on the machine. xll can only be register for a user in the registry.
- if an other user logs onto that machine, we expect com and xll are available. But this not the case.
so our idea is, that the com add-in register the xll add-in.
This is the way we can install our add-in for all user on a machine.
This scenario is vital for use, because it allows us to roll out the add-in on terminal server an large managed it- infrastructures, where running a setup from a single user is not allowed.
c) sometimes the registered xll add-in is not available, even if we registered it. excel shows an error #NAME. This happens if excel is started in automation mode and is embedded in an outer application.
So I really need your advise if it is possible and how we achieve to register the xll add-in reliable.
What is the advantage using adxregister instead of ExcelApp.RegisterXll?
What is the advantage using ExcelApp.RegisterXll instead of adxregister? |
|
Dmitry Kostochko
Add-in Express team
Posts: 2887
Joined: 2004-04-05
|
Hi Dirk,
I don't think these "large problems" relate to adxregistrator.exe itself. It is the Excel nature. Please see my comments below.
a) We have two add-ins in the list of installed add-ins but have only one product. This is confusing our customers.
You really have 2 Excel extensions: COM add-in and XLL. Excel shows them in the list of installed add-ins. You can set AddinModule.AddinName and ADXXLLModule.AddinName to different values, e.g. "My Company Add-in" and "My Company Functions", probably this will be clearer to your customers.
b) In the following scenario it is not always possible to use adxregister:
As you know, it is impossible to register XLL for every user of a machine. And, as you understand, it is not our limitation. You can try to call the RegisterXll method in your com add-in, this should register your XLL for the current user.
c) sometimes the registered xll add-in is not available, even if we registered it. excel shows an error #NAME. This happens if excel is started in automation mode and is embedded in an outer application.
We have already discussed this issue, as far as I understand you already implemented the workaround - turn the XLL off and then on by using the Installed property.
What is the advantage using adxregister instead of ExcelApp.RegisterXll?
I think you mean using adregistrator.exe during installation, correct? If yes:
- This is a supported way to register XLL for the current user.
- XLL will be unregistered for the current user correctly during uninstallation.
Disadvantage: it is impossible to register XLL for all users of the PC.
What is the advantage using ExcelApp.RegisterXll instead of adxregister?
- By using the RegisterXll method in your COM add-in's code you can register XLL for the current user (of course, if XLL is not registered).
Disadvantage: your XLL will remain in the Inactive Application Add-ins list after uninstalling your solution. |
|