我正在尝试构建一个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
当我打开此工作簿时,它根本不执行任何操作(不会打开并且不保存日期)。有没有更好的方法来做到这一点。
答案 0 :(得分:1)
它不起作用的原因是因为你将选项savechanges
设置为false,这意味着你陷入了永远不会满足条件的循环中。
如果将此更改为true。工作簿将在关闭之前保存第一次,因此会在没有操作的情况下再次打开,因为条件为真。