Excel VBA:自动启动运行下载的工作簿时出错

时间:2018-07-12 18:30:45

标签: excel vba excel-vba

我遇到一个工作簿问题,该工作簿在打开工作簿后立即运行一个子例程。仅当工作簿是第一次下载并运行时,才会出现此问题。我已经设法通过在ThisWorkbook-> Workbook Open中拥有一个带有以下代码的工作簿来简化问题:

Private Sub Workbook_Open()
Sheet3.Activate
End Sub

显示的错误是“对象'_worksheets'的方法'激活'失败”,在我的原始程序中(未简化,此处未写,因为内容广泛),错误有所不同。

如何重现该错误:

上载工作簿->下载工作簿->运行工作簿->询问时启用内容(宏)->工作簿打开并运行sheet3.activate->我收到错误->关闭工作簿->打开工作簿(无错误,工作表3激活)->打开工作簿时永远不会出错->上传工作簿->下载并运行工作簿->再次出现错误

这就像子例程在第一次设置工作簿时中断了Excel,因此没有将其设置为激活工作表。

我真的很想有一个带有启动宏(显示用户窗体,隐藏Excel)的工作簿,我可以发送给其他人而不会遇到错误。

有什么办法解决这个问题?

编辑:程序中没有其他代码。只有我写的。

edit 2:这可能是罪魁祸首:当我在下载工作簿后首次运行该工作簿时,错误弹出,而当错误出现时,我可以在Windows任务栏上看到该工作簿的两个实例,名称后面带有[保护视图]的一个。就像子例程在工作簿变为受保护的普通表单之前运行(单击启用内容...之后)。如果这有意义的话。

1 个答案:

答案 0 :(得分:0)

我看不到您的所有代码,尤其是您激活的工作表中的代码,但是以下内容可能会有所帮助:

'*******************************************************************************************************************************
' To activate the active worksheet
' Bug in Excel: The Worksheet_Activate event does not fire for a sheet that is currently active or may generate errors
' The solution is to call it explicitely, but make sure that Worksheet_Activate() is declared as Public in the worksheet code
'*******************************************************************************************************************************
Public Sub activateActiveSheet()

On Error Resume Next
ThisWorkbook.ActiveSheet.Worksheet_Activate
Err.Clear: On Error GoTo 0

End Sub