2012-08-03 62 views
0

我想創建一個宏,它將自動關閉並保存一個Excel工作簿,如果它已經打開了一段時間。修改一些代碼,我在微軟的網站上找到,我有:VBA中的ActiveWorkbook

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

這實際上是一個簡單的錯誤,爲我解決了一些Google搜索問題。

我在OpenOffice中測試,它使用與Microsoft OO 3.3不同的API。 3.2,我正在使用參考文檔,支持ActiveWorkbook,而3.3需要ThisComponent而不是ActiveWorkbook