2014-06-05 60 views
0

目標:我試圖自動關閉工作簿以更新報告,因爲有用戶打開它們,並忘記在晚上關閉它們。我已將自動關閉時間設置爲上午12點。瞭解自動關閉並保存在Excel中的代碼

問題1:所以我已經有一些針對這個問題的解決方案。我通過在google上進行的一些搜索找到了答案,並結合了幾段代碼來獲得我想要的內容。現在我想知道是否可以在一個模塊或ThisWorkbook中關閉excel vba自動保存&。基本上保留所有的代碼在一個地方。

問題2:我知道第一個和第二個宏工作,我想知道哪個更高效,更乾淨,爲什麼?

1ST MACRO

'插入的ThisWorkbook

Private Sub Workbook_Open() 

Static SchedSave 

    If SchedSave <> 0 Then 
    Application.OnTime SchedSave, "SaveWork", , False 
    End If 

    SchedSave = TimeValue("09:29:00") ' Insert Desired time in Military 
    Application.OnTime SchedSave, "SaveWork", , True 

End Sub 

' 插入模塊

Sub SaveWork() 
    ThisWorkbook.Save 
    ThisWorkbook.Close 
End Sub 

2ND MACRO

'插入的ThisWorkbook

Private Sub Workbook_Open() 
    Reset 
End Sub 

Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
    Reset 
End Sub 

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
    Reset 
End Sub 

' 插入模塊

Sub Reset() 
    Static SchedSave 
    If SchedSave <> 0 Then 
    Application.OnTime SchedSave, "SaveWork", , False 
    End If 
    SchedSave = TimeValue("12:00:00") ' 12AM 
    Application.OnTime SchedSave, "SaveWork", , True 
End Sub 

Sub SaveWork() 
    ThisWorkbook.Save 
    ThisWorkbook.Close 
End Sub 

還貼出:http://www.mrexcel.com/forum/excel-q...ml#post3830083(這是我得到的幫助來獲得第一宏工作)

+0

這個我會去解決2,你可以接着調用從幾個地方的Reset()ThisWorkbook.Close的SaveChanges:=假 – Nybbe

回答

0

我可能不是天才,但沒有什麼能阻止你將「模塊代碼」放在「本書」中。

我不明白爲什麼每次打開工作簿時,都必須調用「重置」宏,每次更改工作表時,以及......打開工作簿時不會激活工作表?我會說第一是最好的。

編輯:大聲笑我沒有看到格式化的「插入的ThisWorkbook

+0

在關於將模塊代碼放入ThisWorkbook中,您是否建議我將代碼更改爲可能如下所示: '插入此工作簿 Sub Workbook_Open() Static SchedSave If SchedSave <> 0 Then Application.OnTime SchedSave, "SaveWork", , False End If SchedSave = TimeValue("09:29:00") ' Insert Desired time in Military Application.OnTime SchedSave, "SaveWork", , True End Sub Sub SaveWork() ThisWorkbook.Save ThisWorkbook.Close End Sub new2hacking

+0

如果我正確理解,那正是第一種可能性,恕我直言是最好的 – Noldor130884