我有一个用 C# 编写的 COM DLL,可以与 MS Word(使用 Interop)一起使用,并在 VB6 项目中使用此 COM。
在模块中,我定义了一个这样的全局变量:
Public obj As Office.OfficeWord
表格1:
Set obj = New OfficeWord
通过创建对象,创建了一个单词实例,我可以在任务管理器中看到该实例。 在 Form2 中,我创建一个新文档并将其关闭(不是 Word.Application):
OfficeWord.CreateNewDoc
// doing some work
OfficeWord.Close
当我关闭 Form2 并尝试再次添加新文档(在 Form1 或 Form2 中)时,出现以下错误: “Word 遇到问题”。但是,该实例仍然存在,我可以在任务管理器中看到它。 我应该提到,如果我只使用 Form1 一切都很好,我可以添加一个新文档并多次关闭它,最后,也正确关闭实例(obj.Quit),但是当我想与公众一起工作时Form2 中的对象我收到上面的错误。
C# DLL 使用以下代码行来创建和关闭 Word 文档和实例:
public OfficeWord()
{
wdapp = new Word.Application();
}
public int CreateNewDoc()
{
wddoc=wdapp.Documents.Add();
}
public int Close()
{
object saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;
object originalFormat = Word.WdOriginalFormat.wdOriginalDocumentFormat;
object routeDocument = false;
wddoc.Close(ref saveOption, ref originalFormat, ref routeDocument);
}
public int Quit()
{
wdapp.Quit(false);
}
必须使用Form1、Form2和公共变量。 请指导我。 谢谢。
这可能看起来有点奇怪,但它在“vb6”中多次有效。 当您使用了相应的对象并且不再需要它后,将其设置为“Nothing”。
表格1:
Set obj = Nothing
Set obj = New OfficeWord