0
我有一個2010 Excel功能區加載項。當你按下按鈕時,它只需將一些數據寫入Excel應用程序。爲了寫這個數據我需要獲得活動工作表。爲了獲得活動工作表,我需要activeWorkBook。我可以得到xlApp罰款xlApp.ActiveWorkbook返回null
xlApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
它檢索xlApp罰款,但每當我試圖讓活動工作簿返回null。無論。除非我重新啓動電腦。然後,它的工作,但只有第一次。以下是上下文中的整個代碼塊。我想知道如何解決xlApp.ActiveWorkBook爲空。這樣我可以獲得活動工作表。然後將數據寫入活動工作表。
public void sendData()
{
Excel.Application xlApp = null;
Excel.Workbook xlWorkBook = null;
Excel.Workbooks xlWorkBooks = null;
Excel.Worksheet xlWorkSheet = null;
object misValue = System.Reflection.Missing.Value;
try
{
xlApp = new Excel.Application();
//xlWorkBooks = xlApp.Workbooks;
//xlWorkBook = xlWorkBooks.Add(Properties.Settings.Default.FileToSend);
//xlWorkSheet = xlWorkBook.Sheets[1];
xlApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
xlWorkBook = (Excel.Workbook)xlApp.ActiveWorkbook;
xlWorkSheet = (Excel.Worksheet)xlWorkBook.ActiveSheet;
}
catch (Exception ex)
{
// handle error...
}
finally
{
if (xlWorkSheet != null)
Marshal.ReleaseComObject(xlWorkSheet);
if (xlWorkBook != null)
Marshal.ReleaseComObject(xlWorkBook);
if (xlWorkBooks != null)
Marshal.ReleaseComObject(xlWorkBooks);
if (xlApp != null)
Marshal.ReleaseComObject(xlApp);
}
在此先感謝!
所以它檢索xlApp就好了。但是xlApp.ActiveWorkBook由於某種原因而爲空。我更新了我的問題^ – Benny
我不太瞭解這個問題,但爲什麼要調用'xlApp = new Excel.Application();'?該行似乎只是讓您的以下行不太可能按預期工作。正如@Govert所指出的,你的問題很可能出在Marshal.GetActiveObject這個「獲得一個正在運行的實例......」你無法控制你得到的實例,並且使用Interop服務很容易獲得多個不可見的Excel應用程序在背景中。 –
我忘了發表評論,我只是嘗試兩個seperatley,並忘記評論它。當我調試它的時候,我的添加內容打開並且出現了excel的實例,並且似乎在抓取那個,因爲沒有打開其他實例。所以我不知道它在做什麼。我從字面上複製並從另一個文件中粘貼了它,現在這個...我雖然錯過了一個引用,但我不認爲我是。 – Benny