如何知道何时关闭文件


1

我有一个脚本,可将一部分数据从一个文件复制到另一个文件。目标文件在用户之间共享。复制后,我保存并关闭目标文件,并发出“已更新”消息。

我的代码:

...        
   Workbooks(CurrFile).Activate
   Worksheets(CurrHosp).Range("A1").Select
   Selection.PasteSpecial xlPasteValues
   TimeStamp = Now()
   ActiveSheet.Range("A5").Value = TimeStamp
   ActiveSheet.Range("A1").Select

   Workbooks(ModelFile).Close SaveChanges:=False
   Workbooks(CurrFile).Close SaveChanges:=True

   MsgBox ("Destination Updated")
Else
   MsgBox ("No Source File Selected")
End If

   Application.StatusBar = False
   Application.DisplayAlerts = True
   Application.ScreenUpdating = True
End Sub   

今天,用户离开了她的办公桌,同时打开了“已更新”消息框。这使目标文件(Currfile)处于打开状态,从而阻止其他用户对其进行更新。

在发布Workbooks()。Close语句后,Excel实际上何时关闭文件?子例程完成后是吗?在发出“已更新”消息框之前,如何检测到它确实已关闭?


VBA代码是否位于您要关闭的工作簿中?
Ƭᴇcʜιᴇ007

否。要复制的数据源和目标是另外两个文件。总共3个文件。
B540Glenn '16

DoEvents在显示之前滑动a MsgBox,以便让Excel处理关闭。您不想“检测到它确实关闭了”,只想给Excel一个机会在做其他事情之前(例如显示一个消息框)做它的事情- DoEvents就会做到这一点。
Mathieu Guindon '16

@Mat的杯子,DoEvents工作了。如果您想以答案的形式填写,我会接受。抱歉,回复花了很长时间。生成适当的测试文件花了一段时间。
B540Glenn '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.