我正在尝试创建一个宏,如果Excel工作簿已打开一段时间,它将自动关闭并保存它。修改我在微软网站上找到的一些代码,我有:
Private Sub Workbook_Open()
StartTimer
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
StartTimer
End Sub
Const idleTime = 30
Dim Start as Long
Sub StartTimer()
Start = Timer
Do While Timer < Start + idleTime
DoEvents
Loop
Application.DisplayAlerts = False
ActiveWorkbook.Close True
Application.DisplayAlerts = True
End Sub
但是,这会在循环结束时(经过30秒后)引发错误。在Application.DisplayAlerts = False
的行中,它给出了一个错误BASIC runtime error Object variable not set
如果我注释掉了应用程序行,它会给我带来与ActiveWorkbook行相同的错误。然后我尝试制作一个只调用Msgbox ActiveWorkbook.name
的宏,这给了我同样的错误。我以前从未使用过VBA,所以我觉得这是一个非常明显的错误,但是SO的帮助会受到赞赏。
答案 0 :(得分:0)
实际上这是一个简单的错误,为我解决了一点谷歌搜索。
我在OpenOffice中进行测试,它使用的是与Microsoft不同的API,从OO 3.3开始。 3.2,我使用的是ref docs,支持ActiveWorkbook,而3.3需要ThisComponent而不是ActiveWorkbook