2015-06-29 52 views
0

我想構建一塊VBA,每次打開工作簿時它都會自動執行。這段代碼應該首先檢查該工作簿是否在該特定日期之前已經打開,其次,如果尚未打開,則應刷新數據連接,關閉/保存工作簿。使用VBA在Excel中動態刷新數據連接

我開發了下面的代碼,我認爲它應該工作(它不)。

Private Sub Workbook_Open() 
    Dim wsSheet As Worksheet 
    On Error Resume Next 
    Set wsSheet = Sheets("book_helper") 
    On Error GoTo 0 

    If wsSheet Is Nothing Then 
    Sheets.Add.Name = "book_helper" 
    ActiveWorkbook.RefreshAll 
    Sheets("book_helper").Range("A1").Value = Date 
    ActiveWorkbook.Close savechanges:=False 
    Else 
    If Sheets("book_helper").Range("A1").Value < Date Then 
     ActiveWorkbook.RefreshAll 
     Sheets("book_helper").Range("A1").Value = Date 
     ActiveWorkbook.Close savechanges:=False 
    End If 
    End If 

End Sub 

當我打開此工作簿時,它根本不會執行任何操作(不會打開並且不保存日期)。有沒有更好的方法來做到這一點。

回答

1

它不起作用的原因是因爲您已將選項savechanges設置爲false,這意味着您陷入了條件永遠不會滿足的循環中。

如果將此更改爲true。該工作簿將在關閉之前首次保存,隨後會在沒有任何操作的情況下再次打開,因爲條件是正確的。