0

我正在尝试创建一个宏,如果它已打开一段时间,它将自动关闭并保存 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如果我注释掉 Application 行,它会给我与 ActiveWorkbook 行相同的错误。然后我尝试制作一个只是调用的宏,Msgbox ActiveWorkbook.name这给了我同样的错误。我以前从未使用过 VBA,所以我觉得这是一个非常明显的错误,但我们将不胜感激。

4

1 回答 1

0

这实际上是一个简单的错误,为我解决了更多的谷歌搜索。

我在 OpenOffice 中进行测试,它从 OO 3.3 开始使用与 Microsoft 不同的 API。我使用 ref docs 的 3.2 支持 ActiveWorkbook,而 3.3 需要 ThisComponent 而不是 ActiveWorkbook

于 2012-08-03T04:10:55.290 回答