vba - 共享 Excel 文档

标签 vba excel

我有一个包含宏的 Excel 文档,其中包含信息的输入和更新表单,该文档用作每月数据库,您也可以从中运行报告。

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

最佳答案

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

  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

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

关于vba - 共享 Excel 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38791380/

相关文章:

excel - MATCH 和 INDEX 到矩阵中

excel - 循环遍历范围以创建嵌套数据树

vba - Excel 中的 VBA 函数可以返回范围吗?

vba - 获取特定对象vba的库名称

android ExceptionInInitializerError Caused by Unable to determine record types while new HSSFWorkbook(inputStream) 问题

excel - 使用VBA从一行Excel中删除所有空格

excel - 如何在 CSV 文件中的公式中转义逗号

excel - 如果最后一个或第一个字符是空格,则为单元格着色

Excel vba 如何复制具有所有格式和页面设置的工作表

java - 使用 Apache-POI 编写工作簿后出现问题