Vba 从word打开时绕过工作簿\u打开

Vba 从word打开时绕过工作簿\u打开,vba,excel,ms-word,Vba,Excel,Ms Word,我正在从事一个需要excel文档和word文档的项目。我已经使用UserForms对excel文档进行了完整的编程,其中一个在打开文档时自动打开。(见下面的代码) word文档已编程为从excel文档中读取数据并将其写入报表。(见下面的代码) 问题在于,每次按下此按钮时,它都会从excel文档打开用户表单,并停止其他代码,直到用户表单关闭。是否有一种方法仅在用户窗体打开时才打开它 我试过了 Application.EnableEvents = False 但是,这只是返回一个找不到的方法或数据

我正在从事一个需要excel文档和word文档的项目。我已经使用UserForms对excel文档进行了完整的编程,其中一个在打开文档时自动打开。(见下面的代码)

word文档已编程为从excel文档中读取数据并将其写入报表。(见下面的代码)

问题在于,每次按下此按钮时,它都会从excel文档打开用户表单,并停止其他代码,直到用户表单关闭。是否有一种方法仅在用户窗体打开时才打开它

我试过了

Application.EnableEvents = False
但是,这只是返回一个找不到的方法或数据成员(因此我假设必须从excel运行到excel?)

很抱歉,如果这个问题已经得到回答,我找不到任何解决这个问题的方法。如果这是一个非常简单的解决方案,也很抱歉,这是一个学校项目,这是我第一次使用VBA

编辑: 我意识到做以下事情可能会奏效

exWb.Application.EnableEvents = False

但是,因为我需要将它放在“Set”之前,以阻止窗体打开,所以它不起作用(因为在运行行的点上没有设置对象).

您可以在打开工作簿之前使用
objExcel.EnableEvents=False禁用Excel事件,然后使用
objExcel.EnableEvents=True
重新激活它们

正如@Siddarth Rout在评论中所说的,您可以使用
frmOpen.show vbmodeless
在无模式模式下显示您的用户表单,以避免阻塞其他代码的执行。请参阅MSDN关于此的备注:

因此,您的代码将如下所示:

Private Sub cmdAutomatic_Click()
    Dim objExcel As New Excel.Application
    Dim exWb As Excel.Workbook
    Dim selectID As String

    objExcel.EnableEvents = False
    Set exWb =objExcel.Workbooks.Open("C:\ Path")

exWb.Close
    objExcel.EnableEvents = True
    ''Data is written into the document here

    Set exWb = Nothing
    Unload Me
End Sub

将行
frmOpen.Show
更改为
frmOpen.Show vbmodeless
这将启动表单,但不会停止其他代码非常感谢!工作非常完美,现在我查看了一些其他帮助文档,我知道我做错了什么(我使用了exWb而不是objExcel)。=)
exWb.Application.EnableEvents = False
Private Sub cmdAutomatic_Click()
    Dim objExcel As New Excel.Application
    Dim exWb As Excel.Workbook
    Dim selectID As String

    objExcel.EnableEvents = False
    Set exWb =objExcel.Workbooks.Open("C:\ Path")

exWb.Close
    objExcel.EnableEvents = True
    ''Data is written into the document here

    Set exWb = Nothing
    Unload Me
End Sub