2013-10-22 51 views
4

我試圖從使用C# 4.5的Excel文件調用宏。我的Excel版本是2010年從C調用Excel宏時出錯#

當我嘗試調用宏,我得到以下錯誤:

Cannot run the macro 'MacroName'. The macro may not be available in this workbook or all macros may be disabled. 

我用Google搜索了很多這一點,但沒有什麼似乎工作。

我已經打開了宏安全性,如下面的屏幕截圖顯示:

Macro Security

我使用的代碼如下:

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; 
} 

實際宏存儲在Macros.xls並將在Destination.xslx上運行。當我在Excel本身運行這個宏時,沒有問題。

+0

您需要告訴Excel該宏是哪個工作簿。請參閱應用程序的幫助。運行 –

+0

@TimWilliams:對不起。剛剛看到您的評論。刪除我的帖子。 –

+0

@SiddharthRout - 你應該離開你的帖子!我懶得發表一個答案.... –

回答

8
book.Run ("'Macros.xls'!MacroName");