Вызов макрос Excel из C # с аргументами пользовательских типов - PullRequest
0 голосов
/ 19 февраля 2019

Можно ли вызывать Sub внутри модулей с аргументами пользовательских типов (кроме типов данных по умолчанию, таких как String и т. Д.)?Если да, приведите пример.

Например: допустим, у меня есть тип, определенный в модуле, как показано ниже

Public Type myPersonalData
Name As String
Age As Integer
EMail As String
Address As String
End Type

И мой Sub выглядит следующим образом:

Sub PopulatePerson(person As myPersonalData)
'Need to Access data using person.Name, person.Age
End Sub

В моем C # -коде, поскольку у меня нет типа, я создаю структуру для myPersonalData, здесь это выглядит так,

public struct myPersonalData
{
public String Name;
public int Age;
public String EMail;
public String Address;
}

Я создаю свой объект следующим образом,

myPersonalData person = new myPersonalData();
person.Name = "blahblah";
person.Age = 25;
person.EMail = "blahblah@blah.com";
person.Address = "Home";

Вызывается макрос Excel с аргументами, подобными приведенным ниже,

excelApp.Run("myExcelFile.xlsm!PopulatePerson",person);

при выполнении получения ошибки аргумента, как показано ниже,

An unhandled exception of type 'System.ArgumentException' occurred in console.exe

Additional information: Value does not fall within the expected range.

Примечание: если у меня есть аргументы типа String, он работаетхорошо.Любые мысли будут полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...