C# 全局创建对象实例

C# 全局创建对象实例,c#,vb.net,ms-office,C#,Vb.net,Ms Office,这可能是我应该知道的,但我对此感到困惑。 我正在尝试创建一些对象,并能够全局访问和修改这些对象 我试图创建一个公共模块,并在此模块中声明一些对象。 我可以从另一个子系统访问这些对象,但在构建和运行进程并尝试修改这些对象之后,我会出现异常错误 如果我在公共类Form1中声明对象,也会发生同样的情况。例如: Public Class Form1 Public appWord = New Microsoft.Office.Interop.Word.Application Public wordDoc

这可能是我应该知道的,但我对此感到困惑。 我正在尝试创建一些对象,并能够全局访问和修改这些对象

我试图创建一个公共模块,并在此模块中声明一些对象。 我可以从另一个子系统访问这些对象,但在构建和运行进程并尝试修改这些对象之后,我会出现异常错误

如果我在公共类Form1中声明对象,也会发生同样的情况。例如:

Public Class Form1
Public appWord = New Microsoft.Office.Interop.Word.Application
Public wordDoc as Microsoft.Office.Interop.Word.Document
Private sub Button1_Click
Dim appWord = New Microsoft.Office.Interop.Word.Application
Dim wordDoc as Microsoft.Office.Interop.Word.Document

wordDoc = appWord.Documents.Open("C:\temp\test.dot")
appWord.Quit()
End sub
现在,在我的按钮中,我有:

wordDoc = appWord.Documents.Open("c:\temp\test.dot")
appWord.Quit()
appword = Nothing
构建项目并按下按钮后,出现以下错误:

Type mismatch. (Exception from HRESULT: 0x80020005(DISP_E_TYPEMISMATCH))
我试图做的是启动一个Winword.exe,然后在其中加载一个模板,并从模板中读取一些宏。然后,我希望能够替换应用程序中的宏代码,然后将更改存储到宏中。我有一个公共的sub,它读取宏并将文本放在文本框中。然后我有一个单独的公共潜艇来替换。然而,我正试图找出一种聪明的方法,一次性创建这些对象,这样我就不必一遍又一遍地重复

编辑:如果我在与按钮相同的子对象中声明对象,则不会发生这种情况,如下所示:

Public Class Form1
Public appWord = New Microsoft.Office.Interop.Word.Application
Public wordDoc as Microsoft.Office.Interop.Word.Document
Private sub Button1_Click
Dim appWord = New Microsoft.Office.Interop.Word.Application
Dim wordDoc as Microsoft.Office.Interop.Word.Document

wordDoc = appWord.Documents.Open("C:\temp\test.dot")
appWord.Quit()
End sub

编辑:我现在开始工作了。没有错误,只是文档不存在。。我是个白痴:)

你遇到的问题与你声明“全局”的方式无关。这是一个分派接口错误,告诉您要传递的类型不是interop类所期望的类型,也就是说,对Open的调用可能是错误的。根据,它应该通过引用传递(因此文本字符串无效)。

何时出现此错误?正在执行的代码是什么?但是,当我在与我在其中修改对象相同的子集中声明这些对象时,它为什么工作?有关详细信息,请参阅我编辑的第一篇文章。对不起,我是个白痴。。该文档不存在。。谢谢你把这个清理干净!在这里,你可以看到人类的打字错误是如何毁掉一切的!:)我们不断学习直到我们认为“我是个白痴”。当我们认为自己和蔼可亲时,进步就停止了!!