从C#调用Excel宏时出错

rhu*_*hes 4 c# excel vba excel-vba

我试图使用Excel文件调用宏C# 4.5.我的Excel版本是2010年.

当我尝试调用宏时,我收到以下错误:

Cannot run the macro 'MacroName'. The macro may not be available in this workbook or all macros may be disabled.
Run Code Online (Sandbox Code Playgroud)

我为此搜索了很多内容,但似乎没有任何效果.

我打开了宏安全性,如下面的屏幕截图所示:

宏安全

我使用的代码如下:

Excel.Application book = null;
Excel.Workbooks workbooks = null;
Excel.Workbook macroWorkbook = null;
Excel.Workbook destinationWorkbook = null;

try
{
    book = new Excel.Application();

    workbooks = book.Workbooks;
    macroWorkbook = workbooks.Open(@"D:\Work\Macros.xls");
    destinationWorkbook = workbooks.Open(@"D:\Work\Destination.xlsx");

    book.Run("MacroName");

    macroWorkbook.Close(false);
    destinationWorkbook.Close(true);
}
catch (Exception ex)
{
    throw ex; // the finally will be executed before this is thrown
}
finally
{
    book.Quit();

    System.Runtime.InteropServices.Marshal.ReleaseComObject(macroWorkbook);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(destinationWorkbook);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(book);

    macroWorkbook = null;
    destinationWorkbook = null;
    workbooks = null;
    book = null;
}
Run Code Online (Sandbox Code Playgroud)

实际的宏存储在Macros.xls并将运行Destination.xslx.当我自己运行这个宏时Excel,没有问题.

Tim*_*ams 8

book.Run ("'Macros.xls'!MacroName");
Run Code Online (Sandbox Code Playgroud)