2014-09-02 152 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

相关问题