我有一个脚本,可将一部分数据从一个文件复制到另一个文件。目标文件在用户之间共享。复制后,我保存并关闭目标文件,并发出“已更新”消息。
我的代码:
...
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
就会做到这一点。
@Mat的杯子,DoEvents工作了。如果您想以答案的形式填写,我会接受。抱歉,回复花了很长时间。生成适当的测试文件花了一段时间。
—
B540Glenn '16