【发布时间】:2018-03-30 16:58:29
【问题描述】:
我正在为一个项目在 Excel 中处理几个 VBA 宏。有没有办法确保当您通过宏打开 VBA 宏时,它们不会从其他 Excel 工作簿启动?
例如,假设我在一个工作簿中有一个宏来打开其他 Excel 文件:
Sheets("Sheet1").Select
PathName = Range("D3").Value
Filename = Range("D4").Value
TabName = Range("D5").Value
ControlFile = ActiveWorkbook.Name
Workbooks.Open Filename:=PathName &; Filename
我通常所做的是将Application.EnableEvents = False 添加到子例程中,以确保在打开其他工作簿时不会触发代码。这也是之前SO post建议的方法。
但我想到了两个问题:
这是“安全的”吗?即使我禁用事件,用户是否可以编写自己的宏以在我的活动应用程序上执行?
除了完全禁用事件之外,还有其他解决方法吗?这似乎有点限制,几乎是“把婴儿和洗澡水一起扔出去”。
【问题讨论】:
-
使用 SQL 从工作表中获取数据