2017-03-08 88 views
1

我開始用C#創建一個Excel-Add-IN。C#設置打開的工作簿

什麼,我需要做的很簡單,我需要一個工作簿設置爲變量,該工作簿已經在運行,我想這一點,但沒有奏效

 Excel.Application excel = new Excel.Application(); 
     Excel.Workbook wb = excel.ActiveWorkbook as Excel.Workbook; 
     wb.SaveAs("C:\\Users\\ro_sg\\Desktop\\Pasta1.xlsx"); 
     Excel.Worksheet ws = wb.Worksheets["Plan1"]; 
     Excel.Range range = ws.Range["A1"]; 
     range.Value = "Success"; 

     wb.Save(); 

世界銀行變量不能找到工作簿(得到空),我看不出爲什麼。

請,如果你們中的任何人發現錯誤讓我知道。

謝謝!

回答

0

我相信你的問題是它可能不會找到設置工作簿變量時上游的活動Excel應用程序。看起來你的代碼試圖創建一個新的excel應用程序(沒有工作簿),而不是打開現有的應用程序。

試試這個:

 Excel.Application excel = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); 
     Excel.Workbook wb = (Excel.Workbook)excel.ActiveWorkbook; 
     wb.SaveAs("D:\\WeeeDueceDuece.xlsx"); 
+0

這很有道理,但wb仍然變爲空 –

+0

奇怪。只需驗證一下,當您運行此操作時:在桌面上打開有效的工作簿? –

+0

實際檢查一件事。由於您之前的代碼正在啓動新的空應用程序實例的Excel:進入任務管理器,看看你是否有任何閒置的Excel過程掛在那裏。如果是的話,把它們全部殺掉,然後用我提供的代碼再試一次。只是爲了確保你有一個乾淨的石板。 –

0

我不知道您是否需要獲取特定表格,但是如果您嘗試此操作:
Excel.Worksheet ws = wb.Worksheets [1];
它會得到您的工作簿的第一張

0

如果您的實際代碼沒有更加之間的步驟,它總是會失敗。我很驚訝這行沒有錯誤:

Excel.Workbook wb = excel.ActiveWorkbook as Excel.Workbook; 

這是因爲一個新的Excel實例不一定會創建一個新的工作簿。您可以通過以下線路檢查:

Excel.Application application = new Excel.Application(); 
Excel.Workbooks workbooks = application.Workbooks; 
Console.WriteLine(workbooks.Count); // "0" 

新的工作簿,但是,應該創建工作表的默認數量(通常是3,但編輯)。