VBA中的ActiveWorkbook

时间:2012-08-03 04:04:35

标签: openoffice-calc

我正在尝试创建一个宏,如果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的帮助会受到赞赏。

1 个答案:

答案 0 :(得分:0)

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

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