我的目标是获取所有当前正在运行的脚本的列表,以检查其他用户是否不在运行同一个VBA宏同一时间(如果是的话,然后停止代码等,类似于下面的问题想要的OP)。这将是一个共享工作簿(我知道它不是为这种类型的工作设计的,但我需要尝试它)。防止> 1人一次运行VBA宏(共享wkb)
https://stackoverflow.com/a/36116091/5947935
我一直在努力使在VBA上面的回答工作的代码,但现在看来,这是一个VBS的事情,我想避免这种情况。
我不是一个专家,至少可以说,所以我很难理解如何让它在Excel VBA中工作。我甚至不知道它是否可能。
我也发现这个:VBA Getting program names and task ID of running processes它工作正常,但它只列出正在运行的进程。
但是我不知道如何合并这两个......或者即使WMI是正确的路要走。
我会很感激任何形式的帮助。
我可能会误解,但对我来说,他们似乎都检查在一台工作站上运行的脚本。如果两个不同的用户打开共享工作簿,那么vba将运行在他们的机器上。如果这是Access,会很简单,但是...我假设你正在运行在客户端 - 服务器环境中?如果是这样,也许你可以执行下列操作之一:(a)在服务器上创建一个隐藏文件,当脚本启动时,独占地打开它(即锁定);有代码检查文件是否锁定,如果是,请等待。或者(b)尝试通过创建带有工作站列表(可能是用户名)的文件进行管理 - 可能太麻烦了。 –