共享Excel文档

Sar*_*a C 6 excel vba excel-vba

我有一个带有输入和更新表单信息的宏的Excel文档,该文档用作月度数据库,您也可以在其中运行报表.

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

Sid*_*out 3

我能想到的有一种方法。从逻辑上讲它应该有效。不过我还没有测试过。

  1. 创建临时表并将其隐藏
  2. 当任何人运行宏时,检查该工作表的单元格 A1 是否为空
  3. 如果为空则运行宏
  4. 在运行宏之前,写入该单元格,一旦运行宏,清除另一个单元格的内容
  5. 如下所述夹入您的宏代码

代码

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
Run Code Online (Sandbox Code Playgroud)

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