使用VBA在Excel中dynamic刷新数据连接

我正在尝试构build一个VBA,每次打开工作簿时都会自动执行。 这段代码应该首先检查该工作簿是否在该特定date之前已经打开,其次,如果尚未打开,则应刷新数据连接,closures/保存工作簿。

我已经开发了我认为应该工作的以下代码(它不)。

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 

当我打开这个工作簿时,它根本不会做任何事情(不打开并且不保存date)。 有没有更好的方法来做到这一点。

它不工作的原因是因为你已经将savechanges选项设置为false,这意味着你被困在一个永远不会满足条件的循环中。

如果您将其更改为true。 工作簿会在closures之前首次保存,因此在没有任何操作的情况下会再次打开,因为条件是正确的。