【问题标题】:Enabling macros on a new copied workbook using VBA使用 VBA 在新复制的工作簿上启用宏
【发布时间】:2017-03-17 12:31:03
【问题描述】:

我有一个工作簿,其中有一个子程序,可以创建工作簿的临时副本,我在上面做了一些工作。问题是当我尝试在临时工作簿上运行宏时,如果用户没有始终启用宏,我会得到这个: 这导致我的潜艇无法正常工作。

有没有办法为临时工作簿启用宏?我理解为什么有些人不总是希望为他们的 Excel 启用宏,但如果他们已经选择为原始工作簿启用宏,我可以用它来继续我的临时工作簿吗?

【问题讨论】:

  • 您是否在另一个 Excel 实例中打开新工作簿?关于具体步骤的更多细节会很有用。
  • 我正在使用(工作表名称)。复制。不确定这是否会创建一个新的 Excel 实例。然后我设置我的工作簿变量:set tempWB = activeworkbook.
  • 请出示您的代码,否则很难说可能是什么问题。

标签: excel vba security


【解决方案1】:

简而言之,没有。除非完全禁用宏安全性,否则必须在每个工作簿的基础上显式启用宏。做任何其他事情都将是一个巨大的安全漏洞。您的“创建工作簿临时副本的子”是其他人的“下载恶意工作簿并执行其中代码的子”。您可以从原始工作簿的安全上下文中运行所有代码,也可以为需要“临时工作簿”的工作流找到一些替代品。

【讨论】:

  • 现在无法测试,但如果我使用 VBA 打开包含宏的工作簿,我很确定它不会提示为该工作簿启用宏。您已经在用户系统上运行 VBA,所以此时一切都已经丢失(从宏观安全的角度来看)
  • 如果您的 Excel 的信任中心设置已设置为“启用所有宏”,则不会出现提示。我注意到即使使用“禁用所有带有通知的宏”设置,我的代码也可以正常工作大约一半的时间。也同意你关于宏观安全的第二点。这就是为什么我想知道安全设置是否可以“继承”。
  • @TimWilliams - 有趣。当我测试它时,我每次在我的工作电脑上都会收到错误消息。现在我在 VM 中再次对其进行测试,它似乎取决于我保存临时工作簿的文件夹。
猜你喜欢
  • 1970-01-01
  • 2021-08-28
  • 2020-06-27
  • 2017-09-03
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多