我一直在制作一份excel文档,用于为我的工作制定员工日程安排,使用excel 2010.我们经常遇到的一个问题是,用户可能打开工作簿,忘记在离开之前将其关闭。它们仍然登录到计算机(共享计算机),但该用户配置文件已被锁定,另一个用户登录。正在使用的文件存储在网络驱动器上,因此可以锁定在不同的计算机上,也可以锁定在同一台计算机上想要访问它的当前用户正在使用。当然,如果工作簿保持打开状态,则新用户无法进行更改。我想知道是否有办法在文档中添加一些代码,这样我就可以放一个按钮来关闭另一个用户仍然打开的工作簿实例,也许给当前用户提供保存或不保存的选项,然后关闭并重新打开当前用户打开的工作簿,以便他们可以访问进行更改?如果我需要为您澄清一切,请告诉我。谢谢!
答案 0 :(得分:5)
你可以做一些技巧。如果没有人在例子中改变单元格的选择(即选择A1
或另一个单元格)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"
执行此操作)并检查上次选择更改是否超过10分钟。如果是这样,那么关闭wb。
答案 1 :(得分:0)
这将是te操作系统中非常严重的安全问题。能够与其他用户的文件进行交互并运行程序。
但是,您可以让当前用户执行“另存为”或创建副本并从那里继续
答案 2 :(得分:0)
我想我有一个解决方案。 您可以为例如放置定时器代码每30秒在特定文件夹中搜索特定文件/文件名。 如果文件不存在,则不执行任何操作。 如果文件存在,则它会关闭工作簿而不保存更改。 要在打开此工作簿的对等PC上启动关闭过程,然后创建一个单独的宏来创建该特定文件,并在关闭之前将其删除。 您必须确保关闭过程不适用于工作簿的只读副本。或者,您可以手动将文件粘贴到那里,并在关闭主工作簿后删除。