【问题标题】:Why is my Workbook object null when I set it to activeworkbook?为什么我的 Workbook 对象设置为 activeworkbook 时为 null?
【发布时间】:2014-10-27 04:17:42
【问题描述】:

我看到有人问过类似的问题,但我发现没有一个问题可以解决我的具体情况。

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

以下是我的 using 语句和错误不断发生的代码的 sn-p。

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;

任何帮助将不胜感激!

【问题讨论】:

  • 您从未打开/创建过新工作簿,因此您创建了一个没有打开任何内容的 Excel shell,我想......
  • 约翰,感谢您的回复!所以,我不想创建或打开任何工作簿。我只想要活动工作簿。

标签: c# excel com vsto


【解决方案1】:

代码本身仅在您的任务管理器列出 1 个 EXCEL.EXE 进程时才有效

我怀疑您正在测试东西并且没有正确处理 EXCEL.EXE 或没有错误处理,因此您编组到错误的 EXCEL.EXE 进程。

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

【讨论】:

  • 太棒了!我确保只有一个进程在运行,并且它有效。我将检查这一点以自动化流程管理。
猜你喜欢
  • 2016-03-07
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
  • 2019-01-19
  • 2020-09-13
  • 1970-01-01
相关资源
最近更新 更多