当我将其设置为activeworkbook时,为什么我的Workbook对象为null?

时间:2014-09-02 19:46:36

标签: c# excel com vsto

我已经看到了类似的问题,但我发现的任何问题都没有解决我的具体情况。

我在Visual Studio 2010中有一个Excel 2007 COM加载项,用C#编写。当我将活动工作簿加载到功能区代码中的工作簿对象时,它工作正常。当我在Windows窗体中执行它时,它每次都会从activeworkbook返回null。

以下是我的using语句和错误不断发生的代码片段。

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;

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

代码本身的工作时间只有当您的任务管理器列出了1个EXCEL.EXE进程时

我怀疑您正在测试内容并且未正确处理EXCEL.EXE或没有错误处理,因此您将错误地处理错误的EXCEL.EXE进程。

添加错误处理程序并按照THIS ANSWER正确处理Excel。