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

时间:2015-06-29 08:04:52

标签: excel vba excel-vba

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

我开发了以下代码,我相信它应该可行(它没有)。

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 个答案:

答案 0 :(得分:1)

它不起作用的原因是因为你将选项savechanges设置为false,这意味着你陷入了永远不会满足条件的循环中。

如果将此更改为true。工作簿将在关闭之前保存第一次,因此会在没有操作的情况下再次打开,因为条件为真。