【发布时间】:2019-02-23 23:49:46
【问题描述】:
我需要一些有关“无法运行宏 (...)。此工作簿中可能没有该宏或所有宏都可能被禁用。”的帮助。我尝试了最常见的建议,例如启用宏和编译项目,但没有帮助。
简介:
我创建了一个多年来成功运行的宏(我们称之为旧版本),但最近公司升级到 Office 2016 Professional Plus 并开始出现“下标超出范围错误”。我已经验证并更正了宏 - 原因很简单:新版本的 excel 在新工作簿中创建 1 个工作表,而旧版本创建 3 个工作表。宏试图在不存在的工作表中执行操作。
我已保存更改并发送宏进行测试(新版本)。
宏运行在 Workbook.Open 通过显示一个简单的表格,但新版本没有在客户的计算机上显示该表格。根本没有任何反应。我添加了一个命令按钮,它启动宏并将其发送以进行测试,但按下按钮后再次出现“无法运行宏”消息。我以为代码中可能有错误,但是在我的 PC 上编译并仔细检查所有内容后,我找不到任何错误。因此,我使用单行宏从头开始创建了一个新工作簿:
Sub test()
MsgBox "macros enabled"
End Sub
令我惊讶的是,在客户端计算机上运行此宏也会返回相同的错误消息。在这一点上,我认为有一些安全设置会阻止运行宏,但是 a) 旧版本的宏正在工作,b) 我已经要求客户端从网上下载一些免费的示例宏,它也可以工作。
补充一点:新版本的宏(显然是 MsgBox 宏)在我的家用电脑 (Office 2013)、我的工作笔记本电脑 (Office 2019) 和我妻子的工作笔记本电脑 (Office 365) 上运行良好。问题只出在客户的机器上。
任何建议将不胜感激。
TL:DR 宏在 Office 2019、2013 和 365 上运行,但在客户端 Office 2016 上返回错误。
【问题讨论】:
-
可能有帮助:support.office.com/en-us/article/…,如果包含宏的 Excel 文件是从 Internet 或其他不安全区域以某种方式下载的,您可能需要先让客户unblock 该文件。
-
谢谢,但宏已启用,来自网络的宏工作正常。我分享的没有。
-
听起来客户的 Office 安装可能需要修复。他们是否只运行一个版本的 Office?或者他们是例如运行 2016 但后来安装了 Access 2010?
-
您不应依赖“新版本的 excel 在新工作簿中创建 1 个工作表,而旧版本创建 3 个工作表”。这是一个用户设置 - 只要我记得,我的新工作簿就被设置为 1 个工作表。
-
@rene +10 答案(现在是 +9)是可怕的、不合理的建议。弹出
MsgBox不需要启用 VBA 代码来编写和修改正在运行的 VBA 代码。不要勾选该复选框,除非您实际上在 VBA 中进行元编程,或者需要运行这样做的代码。我不敢相信这个答案的投票,OP(这里和那里)与 VBIDE API 没有任何关系。