Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8209841
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 7, 20262026-06-07T09:52:07+00:00 2026-06-07T09:52:07+00:00

I try to use C# ArrayList to return a list of COM objects (developed

  • 0

I try to use C# ArrayList to return a list of COM objects (developed in C#) and use this list of COM object in VBA (Excel 2007, .NET 4)

I have 3 C# functions that I call from Excel (VSTO project)

    public ArrayList GetSimpleArray()
    {
        ArrayList arr = new ArrayList();
        arr.Add(3);
        arr.Add(2);
        return arr;
    }
    public ArrayList GetComplexArray()
    {
        ArrayList arr = new ArrayList();
        arr.Add(new Fund() { Id = "2" } );
        arr.Add(new Fund() { Id = "3" });
        return arr;
    }
    public IFund GetComplexObject()
    {
        return new Fund() { Id = "2" };
    }

with Fund and IFund defined:

[ComVisible(true)]
public interface IFund 
{
    string Id { get; set; }        
    string Name { get; set; }
}

[ComVisible(false)]
public sealed class Fund:IFund
{
    public string Id { get; set; }
    public string Name { get; set; }

    public Fund()
    {
    }

    public Fund(string id, string name)
    {
        this.Id     = id;            
        this.Name   = name;
    }
}

In Excel I have:

Public Sub GetComObject()

  Call InitVSTOAddIn ' Initialise automationObject

  Dim complexObject
  Set complexObject = automationObject.GetComplexObject()

  Dim simpleArray
  Set simpleArray = automationObject.GetSimpleArray()

  Dim complexArray
  Set complexArray = automationObject.GetComplexArray()

End Sub

complexObject and simpleArray have the value I am looking for (complexObject is an object with an Id and a Name, simpleArray is an ArrayList with 2 elements “3” and “2”).

The problem is for complexArray. It is an ArrayList with 2 items but each item is “No Variables” (see picture attached)

VBA Locals

Do you know why?

Is there a way to return in C# a list of COM objects and use them in VBA ?

Is it good practice to do things like this or is there a better way to use C# objects in VBA ?

Thanks for your help

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-07T09:52:08+00:00Added an answer on June 7, 2026 at 9:52 am

    I Found a way to solve this issue by creating a IListFund which contains a property IFund[] ListFund

    [ComVisible(true)]
    public interface IListFund
    {
        public IFund[] ListFund { get; set; }
    }
    

    I can then have in excel:

    Public Sub GetComObject()
    
      Call InitVSTOAddIn ' Initialise automationObject '
    
      Dim complexObject As ComEqd.IListFund
      Dim complexArr() As ComEqd.IFund
    
      Set complexObject = automationObject.GetComplexObject()
      complexArr = complexArr.ListFund
    
    End Sub
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I try to use the following code: ArrayList<String> Map<String, String> Eclipse complains about both
I try to use the domainpeople.com API and to do I need to use
I try to use Richfaces DataTable with DataTableModel to have server side paging and
I tried to implement the extension method for converting ArrayList object to a List.
I have this f:viewParam that I try to bind validate and convert a userId
I have this XML file which I parse into an ArrayList In this ArrayList
I have a large list of objects, all of whom have a path to
I try use string as a regular expression pattern but I've following errors PHP
I try use a integer array in java with the code below: public static
I try to use doctest from example from http://docs.python.org/library/doctest.html But when I run python

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.