我有一个Windows.Form application与Word和一起使用的Excel。要与他们合作,我使用Interop package。另外,我正在用Visual Studio和C#语言编程。
我创建了一个EventHandler在关闭Word文档之前执行的操作,另一个EventHandler在关闭Excel文档之前执行的操作。这两个事件的功能是:取消关闭文档,然后将其隐藏而不是关闭,以便文档继续在内存中运行。
ExcelDocument->BeforeCloseEvent工作正常,但WordDocument->BeforeCloseEvent给出了错误:
System.NullReferenceException:对象引用未设置为对象的实例。
我收到错误的行在下面的代码中指示。(在代码中,我只显示了如何包括Word / Excel,如何将它们初始化以及两个EventHandlers...。在完整代码的另一部分中,我是使用aplicacionWord / aplicacionExcel显示应用程序的地方。visible= true,...)
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Reflection;
using System.IO;
// Include Word
using Word = Microsoft.Office.Interop.Word;
// Include Excel
using Excel = Microsoft.Office.Interop.Excel;
public partial class formWord : Form
{
// New object type application of Word
Word.Application aplicacionWord = new Word.Application();
// New instance for Word document
Word.Document documentoWord;
// New object type application of Excel
Excel.Application aplicacionExcel = new Excel.Application();
// New instance for Excel document
Excel.Workbook documentoExcel;
// New instance for Excel Worksheet
Excel.Worksheet documentoExcelPrimeraHoja;
正如所说,Excel的事件没有任何错误,但Word却有。该错误是由于文档已关闭,因此... BeforeClose无法按预期方式工作。还有其他方法可以使用BeforeClose事件吗?还是我做错了什么?
另外,我不确定这是否是处理Document.BeforeCloseEventWord和Excel的最佳方法。任何升级它的想法都会很棒。
提醒:我希望在关闭Word / Excel文档时-可以看到Word / Excel应用程序-(用户单击Top-Right-X以退出)而不是关闭文档,而是将其隐藏以使其保持打开状态。
PS:如果您想在自己的机器上尝试该问题,只需在我的代码中进行更改:
// Word application is not visible
aplicacionWord.Visible = true;
// Excel application is not visible
aplicacionExcel.Visible = true;
然后,当c#应用程序运行时,关闭两个程序(Word / Excel),您将看到错误。
拉丁的传说
相关分类