为了账号安全,请及时绑定邮箱和手机立即绑定

如何设置(Word / Excel).Document.BeforeCloseEvent

如何设置(Word / Excel).Document.BeforeCloseEvent

C#
繁花不似锦 2021-04-26 12:20:47
我有一个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应用程序紧密结合在一起,以实现它们确实不常见的功能(“打开”,“保存”和“关闭”用户界面是一个很好的例子),但是它们在“内部”的行为方式是完全独立的和无关。


查看完整回答
反对 回复 2021-05-08
  • 1 回答
  • 0 关注
  • 217 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信