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