Попытка вызвать функцию .NET из VBA - с помощью RUN в VBA - PullRequest
1 голос
/ 09 августа 2011

У меня есть библиотека классов .Net и я сделал все, что нужно, чтобы включить ее в Excel. (Экспонирование как видимое COM, для взаимодействия и восстановления DLL) Я использую Excel 2007. В надстройках Excel я вижу свой «TestLib.Functions», как проверено. Я могу получить доступ к функции в своем коде VBA как:

Set lib = New TestLib.Functions
returnVal = lib.Add(5);

Это отлично работает.

По другим причинам, связанным с проверкой кода, я также видел некоторые функции из другой библиотеки, доступ к которым осуществляется с помощью метода RUN:

Run("avSomeFunction", paramvalue)

Теперь в редакторе VBA, если я пытаюсь получить доступ к функции «Добавить» таким же образом,

Run("Add", 5)

Я получаю сообщение об ошибке: «Не удается найти макрос с именем Add». Это необходимо, что я должен снова добавить tlb в качестве ссылки в VB editot-tools-reference, кроме выполнения Regasm для .net dll? Может кто-нибудь, пожалуйста, дайте мне знать, в чем здесь проблема.

p.s: по какой-то очень сумасшедшей причине у меня однажды внезапно сработало это, но после этого я снова не смог работать. очень странно: (

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

Разница между: добавление tlb в качестве ссылки для вызова функции VS с использованием 'Run'? имеет ответ на этот вопрос.По сути, мне не хватало ссылки на tlb в проекте VBA.Помимо регистрации dll, tlb также необходимо добавить в качестве ссылки.

0 голосов
/ 19 августа 2011

Хотя ваш вопрос не очень прост, я думаю, что ссылки ниже помогут вам в решении вашей проблемы.

Во-первых, я нашел сообщение на форуме , объясняющее тот же тип ошибки, которую вы объясняете: «Не удается найти макрос».

Во-вторых, если это не сработает, попробуйте исследоватьиспользуя ссылки, приведенные ниже:

Если это не помогло решить проблему, измените вопрос, включив в него дополнительную информацию.

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