使用VBA在同一台计算机上closures另一位用户打开的Excel工作簿
我一直在用excel 2010编写excel文档,为我的工作制定员工日程安排。我们经常遇到的一个问题是,用户可能会打开工作簿,忘记在离开之前closures工作簿。 他们仍然login到计算机(共享计算机),但该用户configuration文件被locking,并且另一个用户login。正在使用的文件存储在networking驱动器上,因此可以locking在不同的计算机上,或者在同一台计算机上当前想要访问的用户正在使用。 当然,如果工作簿保持打开状态,新用户将无法进行更改。 我想知道是否有一种方法来添加一些代码到文档,所以我可以把一个button,closures工作簿的实例仍然是由另一个用户打开,也许给当前用户select保存或不,然后closures并重新打开当前用户打开的工作簿,以便他们可以访问进行更改? 让我知道,如果我需要澄清你的任何事情。 谢谢!
你可以做一些技巧。 主要想法是closures工作簿,如果没有人改变了单元格的select(例如selectA1
或另一个单元格),例如10分钟。
1)将此代码添加到vba模块:
Public lastSelectionChange As Date Sub closeWB() If DateDiff("n", lastSelectionChange, Now) > 10 Then ThisWorkbook.Close SaveChanges:=True Else Application.OnTime Now + TimeSerial(0, 10, 0), "closeWb" End If End Sub
2)将以下代码添加到ThisWorkbook
模块:
Private Sub Workbook_Open() lastSelectionChange = Now closeWB End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) lastSelectionChange = Now End Sub
函数closeWb
将每10分钟调用一次( Application.OnTime Now + TimeSerial(0, 10, 0), "closeWb"
做这个),并检查上一次select变更是否超过10分钟。 如果是这样,那么closureswb。
这将是一个非常严重的操作系统安全问题。 能够与其他用户的文件和正在运行的程序进行交互。
但是,您可以让当前用户执行“另存为”或创build一个副本并从那里继续