我已将ActiveX电子表格控件插入到Excel VBA表单中 .

我在ThisWorkbook.Workbook_Open()事件中编写了一个过程,当窗体上存在ActiveX电子表格控件时,它不会在打开工作簿时执行 .

为了简化问题,我有:

  • 创建了一个新工作簿 .

  • 添加了空白表单"UserForm1" .

  • 添加了一个ActiveX电子表格控件到"UserForm1","Spreadsheet1" .

  • 在ThisWorkbook中,添加了Private Workbook_Open()事件:打开工作簿时,Workbook_Open事件不会执行 . 从表单中删除电子表格控件时,workbook_open事件正常执行 .

在这两种情况下都启用了宏 . 手动调用时,其他宏执行成功 .

How do I get the workbook_open event to execute with an ActiveX control on a VBA form?

Private Sub Workbook_Open()
    MsgBox "Workbook_Open event has executed."
End Sub

UPDATE: 当安全性设置为"Disable all macros with notification"且文件在受保护视图中首次打开时,将触发Workbook_Open()事件 . 在随后打开文件时,不会触发该事件 .