共享Excel文档

时间:2016-08-05 14:12:30

标签: vba excel-vba excel

我已经获得了带有输入和更新表单信息的宏的Excel文档,该文档也用作月度数据库,您也可以在其中运行报告。

问题是,在使用文档时,有时会同时使用输入和更新选项,从而导致信息丢失。输入和输出都保存在宏的末尾,以最大限度地减少损失,但我想知道是否有任何在运行时检查是否有其他用户使用的宏,如果是这样,延迟下一个宏运行,直到另一个用户完成了吗?

1 个答案:

答案 0 :(得分:2)

我能想到一种方法。逻辑上它应该工作。但是我没有测试它。

  1. 创建临时表并隐藏它
  2. 当有人运行宏时,检查该表的单元格A1是否为空
  3. 如果为空则运行宏
  4. 在运行宏之前,写入该单元格,运行宏后,清除其他单元格的内容
  5. 如下所述将您的宏代码夹在中间
  6. 代码

    Sub Sample()
        Dim ws As Worksheet
    
        ThisWorkbook.Save
        Doevents
    
        Set ws = ThisWorkbook.Sheets("HiddenSheetName")
    
        If Len(Trim(ws.Range("A1").Value)) = 0 Then
            ws.Range("A1").Value = "Macro Starts"
            ThisWorkbook.Save
            Doevents
    
            '
            '~~> Rest of your code goes here
            '
    
            ws.Range("A1").ClearContents
            ThisWorkbook.Save
            Doevents
        Else
            MsgBox "Please try after some time. There is a macro running... Blah Blah"
        End If
    End Sub
    

    注意:代码运行后,您无法撤消更改,因为代码以编程方式保存文件。这些变化是永久性的。在未共享的文件中,您可以通过关闭文件而不保存并重新打开它来撤消。