XLL Additional Module

Add-in Express™ Support Service
That's what is more important than anything else

XLL Additional Module
How to implement an additional XLL module 
Henri Pellemans




Posts: 104
Joined: 2010-05-06
Hi,

I have read the following topic:
http://www.add-in-express.com/forum/read.php?FID=5&TID=4167

I have a similar problem, and I do not understand the solution provided in that topic [at least I do not know what code I have to use, and where to put this code].

I will describe my problem as follows:

I have a lot of UDFs in a single XLL module. Now I would like to transfer some of these UDFs to a second XLL module [in the same solution]. I can add a XLLAdditionalModule to the project. But UDFs in this [second] module are not visible in Excel.

The UDFs in the second XLL module should also be available in the first XLL module [and the UDFs in the first XLL module should also be available in the second XLL module]

Can you help me by providing the VB.NET code and tell me where to put in the module[s]?

Best regards,

Henri

BTW I have the most recent versions of ADX 2010 Pro, Visual Studio 2010 Pro and Excel 2010 32-bit
Posted 07 Oct, 2011 04:39:03 Top
Eugene Astafiev


Add-in Express team


Posts: 8540
Joined: 2007-07-25
Hi Henri,

Please note that you need to add your additional module to the Modules collection of your main XLL module in Visual Studio (see the Modules property of your XLL add-in module in the designer). That is all. Moreover, you don't need to use any code for this. Just add your second module manually at design-time.
.NET, Extended MAPI, Windows Phone & RT
Posted 07 Oct, 2011 04:48:11 Top
Henri Pellemans




Posts: 104
Joined: 2010-05-06
Hi Eugene,

I created an XLL add-in. In the solutions explorer I rightclick on XLLModule.vb and choose View Designer. In the properties window I go to Modules and then I add two times ADXXLLAdditionalModule with the names HenriModuleItem1 and HenriModuleItem2.

Then I rightclick on XLLModule.vb and I choose View Code.

The code in XLLModule.vb starts with Imports ... and then it shows:
<ComVisible(True)> _
Public Class XLLModule
Inherits AddinExpress.MSO.ADXXLLModule
Friend WithEvents HenriModuleItem1 As AddinExpress.MSO.ADXXLLAdditionalModuleItem
Friend WithEvents HenriModuleItem2 As AddinExpress.MSO.ADXXLLAdditionalModuleItem

I thought now I would have at least two and I even expect three XLL modules to put my UDFs in. I only see one module.

Before I started this topic I did the following:

I created an XLL add-in. I rightclick the project and choose Add Item. I can select either XLL Add-in Module [with description: Implements an XLL add-in Add-In Express based projects] or XLL Add-in Additional Module [with description: An additional COM add-in Module]. BTW the second description seems a bit strange to me. I added two add-ins by choosing XLL Add-in Module.

In this way I have three XLL Modules. The code shows:

In XLLModule.vb

<ComVisible(True)> _
Public Class XLLModule
Inherits AddinExpress.MSO.ADXXLLModule

In XLLModule1.vb

<ComVisible(True)> _
Public Class XLLModule1
Inherits AddinExpress.MSO.ADXXLLModule

In XLLModule2vb

<ComVisible(True)> _
Public Class XLLModule2
Inherits AddinExpress.MSO.ADXXLLModule

Now I can put my UDFs in three different modules. The problem arises that only the UDFs in the first Module are visible in Excel. And I can not use the UDFs of the first module in the second module. How do I refer to those UDFs?

Perhaps there is a very easy solution, but at this moment I don't get it.

Thanks for any help

Henri

PS the same happens when I choose XLL Add-in Additional Module instead of XLL Add-in Module.
Posted 07 Oct, 2011 09:32:46 Top
Eugene Astafiev


Add-in Express team


Posts: 8540
Joined: 2007-07-25
Hi Henri,

1. Create a new XLL project.
2. Add a new item called XLL Add-in Additional Module.
3. Add the just added module to the Modules collection of your main XLL module.

It looks like we need to correct the description. I have added such record in our bug-tracking system under #3262. Thank you for pointing this to me!

FYI Anyway, I have sent a sample XLL add-in project to you. Please check out your Inbox.
.NET, Extended MAPI, Windows Phone & RT
Posted 07 Oct, 2011 10:22:24 Top
Henri Pellemans




Posts: 104
Joined: 2010-05-06
Hi Eugene,

Thank you for sending the sample XLL add-in. The bad news: it is in C#, that I am not familiar with. The good news: however, in the C# code I found that I not only have to add the module to the modules collection of the first XLL module. I also should refer to the ModuleProgID.

That said, I created 3 XLL modules, each with a function. All functions are now available in Excel. So far so good. Half of the problem is solved.

Now the remainder of my quest.

In XLL Module 2 I cannot use the UDFs I defined in XLL Module 1. And so on.

In my opinion it shouldn't be too difficult to do this.

How do I do this?

Best regards,

Henri
Posted 07 Oct, 2011 12:38:07 Top
Henri Pellemans




Posts: 104
Joined: 2010-05-06
If for once I may quote myself: "In my opinion it shouldn't be too difficult to do this".

Indeed, with some trial and error I solved the second part of the problem.

You can use the UDFs in the other XLL modules by referring to them as follows:

In XLLModule you add the code:
Imports MyXLLAddin1.XLLAdditionalModule1.XLLContainer
Imports MyXLLAddin1.XLLAdditionalModule2.XLLContainer

In XLLAdditionalModule1 you add the code
Imports MyXLLAddin1.XLLModule.XLLContainer
Imports MyXLLAddin1.XLLAdditionalModule2.XLLContainer

In XLLAdditionalModule2 you add the code
Imports MyXLLAddin1.XLLModule.XLLContainer
Imports MyXLLAddin1.XLLAdditionalModule1.XLLContainer

That's all.

Have a nice weekend,

Henri
Posted 08 Oct, 2011 05:27:21 Top
Eugene Astafiev


Add-in Express team


Posts: 8540
Joined: 2007-07-25
Hi Henri,

Thank you for sharing your knowledge for other forum readers. Good luck with your add-in project!
.NET, Extended MAPI, Windows Phone & RT
Posted 10 Oct, 2011 07:32:30 Top