如何使用VBA自动接受Excel提示?

我有一个VBA子,它检查工作簿是否打开,然后将数据从另一个工作簿复制并粘贴到其中。 这是在application.ontime循环中自动完成的。 我通常会将其最小化,而我在其他方面的工作,并偶尔检查Excel数据复制/粘贴。 Excel会不时popup一个框,指出目标工作簿已打开,并询问是否要重新打开。 在popup的时间和检查工作簿的时间之间错过了许多子运行。

代码出现问题的地方:

If dataset Is Nothing Then Set dataset = Workbooks.Open("C:\Users\Ken\Desktop\Df.xlsx") Else Set dataset = Workbooks("Df.xlsx") End If 

我能做些什么让Excel自动处理这种情况?

第二个问题:我怀疑这可能与事实有关,因为我可能在运行之间触摸了工作簿而没有保存它,导致Excel认为自上次保存以来发生了更改。 有人可以评论,如果这可能是一个原因?

首先检查工作簿是否已经打开。 如果没有打开,尝试打开它。 这可以在下面的代码中完成。 请参阅链接

 Sub TestFileOpened() Dim fullPath As String fullPath = "C:\Df.xlsx" ' Test to see if the file is open. If IsFileOpen(fullPath) Then Set dataset = Workbooks("Df.xlsx") Else Set dataset = Workbooks.Open(fullPath) End If End Sub Function IsFileOpen(filename As String) Dim filenum As Integer, errnum As Integer On Error Resume Next ' Turn error checking off. filenum = FreeFile() ' Get a free file number. ' Attempt to open the file and lock it. Open filename For Input Lock Read As #filenum Close filenum ' Close the file. errnum = Err ' Save the error number that occurred. On Error GoTo 0 ' Turn error checking back on. ' Check to see which error occurred. Select Case errnum ' No error occurred. ' File is NOT already open by another user. Case 0 IsFileOpen = False ' Error number for "Permission Denied." ' File is already opened by another user. Case 70 IsFileOpen = True ' Another error occurred. Case Else Error errnum End Select End Function