Передача массива объектов из C# в VBA ExcelC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Передача массива объектов из C# в VBA Excel

Сообщение Anonymous »

У меня есть консольное приложение C# и Dll. Я зарегистрировал dll как COM через взаимодействие. Я использовал
  • свойство COM Visible, GUID и т. д.
    Установить информацию о сборке, информацию о сборке, чтобы зарегистрировать ее в COM< /li>
Я сослался на эту dll в коде VBA.
Я создал список объектов для этого класса в консоли приложение, преобразовал его в Array, а затем использовал Excel.Run для отправки массива пользовательских объектов в код VBA.
Я могу получить доступ к свойствам массива в VBA, например LBound и UBound. Но я не могу получить доступ к каждому отдельному объекту в массиве.
Код C# выглядит следующим образом:

Код: Выделить всё

using System;
using System.Runtime.InteropServices;

namespace Save_as_excel_classes
{
[Guid("0BA8F8DE-8F0A-4D7E-9DDB-8AED42943BDA")]
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class CollClass
{
[ComVisible(true)]
public string NameValue { get; set; }
}
}
Консольное приложение выглядит следующим образом:

Код: Выделить всё

using Microsoft.Office.Interop.Excel;
using Save_as_excel_classes;
using System;
using System.Collections;
using System.Collections.Generic;
using _Excel = Microsoft.Office.Interop.Excel;

namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
Application excel = new _Excel.Application();
try
{
string fileName = "D:\\Book2.xlsm";
Workbook wb;
Worksheet ws;
int sheetNumber = 1;
excel.Visible = true;
wb = excel.Workbooks.Open(fileName);
ws = wb.Worksheets[sheetNumber];
ws = wb.Worksheets[sheetNumber];

var collVals = new List();

collVals.Add(new CollClass() { NameValue = "ABC" });
collVals.Add(new CollClass() { NameValue = "DEF" });
collVals.Add(new CollClass() { NameValue = "GHI" });
collVals.Add(new CollClass() { NameValue = "KLM" });
CollClass[] arr = collVals.ToArray();
excel.Run("ThisWorkbook.GetListofObjects1", arr);
}
catch (Exception ex)
{

}
finally
{
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(excel);
}
}
}
}
Сторона VBA выглядит следующим образом: я просто пытаюсь установить NameValue в ячейку.

Код: Выделить всё

Public Function GetListofObjects1(ByRef objColl() As collClass)
MsgBox "Inside GetListofObjects function" + " Hurray!"
Range("C3").Value = LBound(objColl)
Range("C4").Value = UBound(objColl)
Range("C5").Value = objColl(0).NameValue
End Function
Я искал различные вопросы в StackOverflow и на форумах, но не знаю, что делаю неправильно. Каждый раз, когда я запускаю консольное приложение, Excel открывается, появляется окно сообщения, а затем происходит сбой и перезапуск. Вероятно, это очень простое решение, но я занимаюсь этим уже более полутора дней и не могу понять это.


Подробнее здесь: https://stackoverflow.com/questions/787 ... -vba-excel
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Передача массива объектов из C# в VBA Excel
    Anonymous » » в форуме C#
    0 Ответы
    85 Просмотры
    Последнее сообщение Anonymous
  • Как разблокировать проект vba через пароль, используя код vba
    Гость » » в форуме Python
    0 Ответы
    587 Просмотры
    Последнее сообщение Гость
  • Передача аргумента HashTable в функцию Excel VBA с параметром Collection
    Anonymous » » в форуме C#
    0 Ответы
    117 Просмотры
    Последнее сообщение Anonymous
  • Как удалить дублирующиеся записи из массива объектов, которые находятся внутри массива объектов
    Anonymous » » в форуме Javascript
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Экспорт комментариев из Word в Excel с помощью макроса VBA [закрыто]
    Гость » » в форуме Excel
    0 Ответы
    1531 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»