【问题标题】:Disabling macros from other Excel sheets禁用其他 Excel 工作表中的宏
【发布时间】: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建议的方法。

但我想到了两个问题:

  1. 这是“安全的”吗?即使我禁用事件,用户是否可以编写自己的宏以在我的活动应用程序上执行?

  2. 除了完全禁用事件之外,还有其他解决方法吗?这似乎有点限制,几乎是“把婴儿和洗澡水一起扔出去”。

【问题讨论】:

  • 使用 SQL 从工作表中获取数据

标签: vba excel


【解决方案1】:

这似乎打开了没有宏的文件并且它是只读的。 在测试这个时,我什至在 VBA 编辑器中看不到打开文件的宏模块..

Application.AutomationSecurity = msoAutomationSecurityForceDisable
Workbooks.Open Filename:=strFilepath & strFilename, ReadOnly:=True
Application.AutomationSecurity = msoAutomationSecurityByUI

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多