2014-09-02 139 views
1

我看過類似的問題,但沒有發現我已經解決了針對特定情況的解決方案。當我將它設置爲activeworkbook時,爲什麼我的Workbook對象爲空?

我在用C#編寫的Visual Studio 2010中有一個Excel 2007 COM加載項。當我將活動工作簿加載到功能區代碼中的工作簿對象時,它工作正常。當我以Windows窗體的形式進行操作時,它每次都會從activeworkbook中返回null。

以下是我的使用語句和錯誤不斷髮生的代碼片段。

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Reflection; 
using System.Runtime.InteropServices; 
using System.Text; 
using Office = Microsoft.Office.Core; 
using System.Windows.Forms; 
using Excel = Microsoft.Office.Interop.Excel; 
using System.Drawing; 

--------------------------------------------------- 

Excel.Application xlApp; 
xlApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); 

Excel.Workbook xlWkbk = (Excel.Workbook)xlApp.ActiveWorkbook; 
Excel.Worksheet xlWksht = (Excel.Worksheet)xlWkbk.ActiveSheet; 

任何幫助將不勝感激!

+2

你從來沒有打開/創建一個新的工作簿,所以你創建了一個沒有任何打開的Excel shell,我認爲...... – 2014-09-02 20:25:23

+0

約翰,謝謝你的回覆!所以,我並不想創建或打開任何工作簿。我只想要activeworkbook。 – Daniel 2014-09-02 21:47:45

回答

0

只要您的任務管理器有1個EXCEL.EXE進程列出,代碼本身的工作原理就是

我懷疑你正在測試的東西,並沒有正確處置EXCEL.EXE或沒有錯誤處理,因此你元帥到錯誤的EXCEL.EXE過程。

按照THIS ANSWER添加錯誤處理程序並正確處理Excel。

+1

太棒了!我確定只有一個進程正在運行,並且工作正常。我會檢查這一點以自動化進程管理。 – Daniel 2014-09-04 22:11:03

相關問題