Как вызвать макрос из кода C#?
При вызове макроса в excel из кода c# я получаю это исключение System.Runtime.InteropServices.COMException (0x800A03EC): исключение из HRESULT: 0x800A03EC
Что я уже пробовал:
Я использую Microsoft.Офис.Взаимодействие.Excel версии 15 и клиентская машина имеет Office 2000 , и при вызове макроса я получаю следующее исключение System.Runtime.InteropServices.COMException (0x800A03EC): исключение из HRESULT: 0x800A03EC.
Это код, который у меня есть трид.
private void RunMacro(Application xlApp, Workbook xlWB, string MacroName, out string status) { Worksheet xlWS; status = string.Empty; if (xlApp != null) { xlWS = (Excel.Worksheet)xlWB.Worksheets.get_Item("Sheet1");// .get_Item(paramsExcelOperatios.WorksheetNo); if (MacroName != String.Empty) { xlWS.GetType().InvokeMember("Run", System.Reflection.BindingFlags.Default | System.Reflection.BindingFlags.InvokeMethod, null, xlApp, new Object[] { MacroName }); } else { status = "Failure - Macro name should not be empty"; } } else { status = "Failure - Worksheet name is not valid."; } }
lmoelleb
Разве это не Office 2013, который является версией 15? Таким образом, ваша офисная установка на машине слишком стара для используемой вами оболочки COM на 13 лет?
CHill60
Я предполагаю, что вы пытались запустить макрос из Excel?
Member 12766428
Я использовал этот синтаксис " xlWS.GetType().InvokeMember("Run", System.Отражение.Флаг bindingflags.По Умолчанию | Система.Отражение.Флаг bindingflags.InvokeMethod, null, xlApp, new Object[] { MacroName });" для вызова/выполнения макроса .
CHill60
Причина, по которой я спросил, заключается в том, что вам нужно убедиться, что сам макрос работает в электронной таблице. Это поможет определить, где на самом деле находится реальная проблема. Поэтому первое, что нужно сделать, это открыть книгу в Excel, перейти в меню "макросы", "просмотр макросов", найти макрос, с которым у вас возникли проблемы, и нажать кнопку "Выполнить".
Возможно, вы захотите сообщить своему "клиенту", что Office 2000 пронизан дырами в системе безопасности и не совместим с Windows 10 - его действительно следует обновить
Dave Kreskowiak
Ваш код написан против оболочки COM для более новой версии Office. Эта оболочка не будет работать должным образом против более старой версии Office.
Реальный вопрос заключается в том, почему вы хотите поддерживать такую старую версию Office?