2013-12-17 138 views
3

我嘗試在C#應用程序的excel文件中運行vba腳本時出現問題。 我的代碼是:在Excel中運行vba腳本的C#

public void RunMacro(string path, string macro) 
{ 
    Excel.Application app = null; 
    Excel.Workbooks workbooks = null; 
    Excel.Workbook workbook = null; 

    app = new Excel.Application(); 
    if (app == null) 
     return; 
    app.Visible = false; 
    ChangeCulture(); 
    workbooks = app.Workbooks; 
    workbook = workbooks.Open(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
     Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
     Type.Missing, Type.Missing); 

    LogWrapper.Debug("Run Macro start"); 

    app.Run(macro, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
     Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing 
     , Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing 
     , Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing 
     , Type.Missing, Type.Missing, Type.Missing); 
    LogWrapper.Debug("Run macro finish"); 

    workbook.Close(false, Type.Missing, Type.Missing); 
    app.Quit(); 
    ReleaseObject(app); 
    ReleaseObject(workbook); 
} 

我點擊後的按鈕,在我的網頁瀏覽器中運行這個方法,瀏覽器一直工作(「等待本地主機...」)。我在Firebug中看不到任何請求。 我的LogWrapper只記錄第一個信息(「運行宏啓動」)。 在事件查看器中沒有任何有關此執行的信息。 在任務管理器進程中,EXCEL.EXE使用100%的處理器。 而我正在等待半小時的結果,仍然沒有任何結果。

當我將vba腳本名稱更改爲正在運行時出現錯誤,指出在excel文件中找不到vba腳本。 我的VBA腳本很簡單:

Sub start() 
    Range("A3").Select 
    ActiveCell.Value = "def" 
    Range("A4").Select 
End Sub 

有人知道我應該在哪裏搜索有關此問題的信息?

+1

試試'app.Run(宏);' –

+0

好的。問題在於宏觀內容。不能編輯單元格值,有人知道爲什麼? – dzzdr

+0

你收到什麼異常? – etaiso

回答

0

這是IIS USER的權限問題。當我更改權限或打開Windows身份驗證時,一切正常。