我有一个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 Wordusing Word = Microsoft.Office.Interop.Word;// Include Excelusing 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 visibleaplicacionWord.Visible = true;// Excel application is not visibleaplicacionExcel.Visible = true;然后,当c#应用程序运行时,关闭两个程序(Word / Excel),您将看到错误。
1 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
我只能和Word对话-但因为那是您遇到错误的地方...您说
提醒:我希望在关闭Word / Excel文档时-Word / Excel应用程序可见-(用户单击Top-Right-X退出)而不是关闭文档,而是将其隐藏以使其保持打开状态。
如果用户单击应用程序的red-x按钮,则不是关闭文档,而是退出Word.Application。这也将关闭触发该文档的文档BeforeClose
,但是由于该应用程序不再可用,您会收到错误-该对象aplicacionWord
为“ null”。
Word有一个Quit
事件,但是没有提供取消的选项-Word将退出。
您可以在Quit
事件中放入代码,但是要采取某些措施,例如可以设置布尔值,可以检入BeforeClose
,保存文档,启动Word的新实例(不可见)并在新实例中再次打开文档。
重要的是要注意,Excel和Word在许多方面并不相同。即使两者都在“ Microsoft Office”的保护下,它们的起源也非常不同,并且是由不同的团队开发的。偶尔会尝试将所有“核心” MS Office应用程序紧密结合在一起,以实现它们确实不常见的功能(“打开”,“保存”和“关闭”用户界面是一个很好的例子),但是它们在“内部”的行为方式是完全独立的和无关。
- 1 回答
- 0 关注
- 217 浏览
添加回答
举报
0/150
提交
取消