Выполнить макрос VBA через C # Interop? - PullRequest
3 голосов
/ 09 января 2009

просто интересно, кто-нибудь может подсказать, почему я могу получить ошибку? В настоящее время я пытаюсь выполнить макрос в рабочей книге, вызвав метод Application.Run, который предоставляет взаимодействие.

В настоящее время выдается следующее исключение COM:

{System.Runtime.InteropServices.COMException (0x800A03EC): Cannot run the macro Macro1'. 
The macro may not be available in this workbook or all macros may be disabled.

Я поместил содержащуюся книгу в надежное место, установил все параметры безопасности на минимальные значения и обеспечил программный доступ к моей объектной модели. У меня совершенно нет идей, и Google до сих пор меня не подводил!

Кто-нибудь делал это, или вы можете предложить что-нибудь, что я мог бы попробовать?

Большое спасибо!

Ответы [ 5 ]

1 голос
/ 12 января 2009

Оказалось, что на самом деле в рабочую книгу были вставлены два макроса с одинаковыми именами. Вышеуказанное исключение переводится как ошибка «Ошибка компиляции: обнаружено неоднозначное имя» в VBA - мне следовало бы перейти непосредственно к VBA, чтобы посмотреть на это, а не предполагать, что с взаимодействием происходило что-то странное.

0 голосов
/ 31 марта 2014

Я столкнулся с той же проблемой, макрос хранится в «Модуле» с именем «MainModule».

Я пытался

App.Run("Abc.xlsm!CalcSomething");

App.Run("MainModule!CalcSomething");

App.Run("Abc.xlsm.CalcSomething");

App.Run("MainModule.CalcSomething");

App.Run("CalcSomething);

Ничего не работает.

0 голосов
/ 17 мая 2010

Та же проблема возникает при вызове некоторых сторонних макросов с помощью Interop, и это связано с тем, что надстройки не будут правильно зарегистрированы в Excel. Для этого случая это может быть полезно:

Как загрузить надстройку Excel с помощью Interop

0 голосов
/ 14 января 2010

Хотя на этот вопрос уже есть ответ, у меня были те же симптомы. Наконец, я решил проблему с этим исправлением Microsoft

0 голосов
/ 10 января 2009

Если макрос хранится в личной рабочей книге, возможно, вам потребуется указать имя рабочей книги: personal.xls! Macroname

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