【问题标题】:Error adding a new sheet to a XLSM Macro Enabled Excel File将新工作表添加到启用 XLSM 宏的 Excel 文件时出错
【发布时间】:2019-06-29 06:38:04
【问题描述】:

我想使用 VBA 在启用宏的 Excel 文件中添加新工作表。

我使用的方法无关紧要:

  • Sheets.add
  • 复制并粘贴工作表以创建新工作表

新工作表已创建(或复制),但宏立即停止,没有任何消息错误,其余代码未执行。

我将文件转换为 XLSX,当我运行代码时,会创建工作表并且代码执行会继续完美。

这就是为什么我认为它与启用宏的 Excel 文件类型有关。

更新:

我在另一台 PC 和 Excel 安装中测试了代码,并创建了新工作表,代码继续运行。

两台电脑的唯一区别是 Excel 2016 版本:
一个是标准的,另一个是专业的。

【问题讨论】:

  • 需要出示相关代码。实际上,您的问题似乎是对心理调试的要求。就个人而言,当我真正能看到代码时,我倾向于更好地调试代码。
  • 您要添加工作表的工作簿中是否有任何事件代码?或者任何使用 UDF 的条件格式?
  • 让我遥想...啊..在两行之间有一个End,你看到了吗? :p
  • 感谢您的快速答复。哈!,不,不,行之间没有“结束”。我已经更新了我的问题,以确认这似乎不是代码问题,而是安装或与我的一台设备相关的问题。

标签: excel vba xlsm


【解决方案1】:

在你的 xlsm 文件中试试这个代码:

Dim ws As Worksheet
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))

如果这不起作用,请告诉我。

【讨论】:

  • 我已经更新了我的问题。请看一看。只是为了确认您,我尝试: Sheets.Add 或 sheetSource.Copy After:=Sheets(Sheets.Count) 复制工作表在这两种情况下,宏在创建/复制新工作表后停止。但是,正如我在更新中评论的那样,它似乎只发生在我的办公室电脑上,所以,这是我必须调查的事情。谢谢
  • 您的工作簿是否使用功能区?只是一个想法,但可能是添加和复制工作表会触发您的代码未逐步执行的其他过程,这可能是发生故障的地方。
  • 是的,它使用功能区。可能是我错了,但我认为它可能是一个错误。我已经看到2016 Excel版本有一个区别:在16.0.4266.1001中,添加新Sheet后执行停止,而在16.0.6925.1016中,添加后执行完美继续。
  • 这肯定是一个错误。在添加和删除工作表时出现的多个 Excel 版本中存在已识别的错误。据我所知,这些都不完全符合您的描述,但这并不意味着该错误不存在。但是,过去在使用功能区时,我在尝试调试程序时遇到了问题,所以我不排除这种可能性。您很难隔离问题,祝您好运!
  • 如果它是 XLSM 文件,我在 Add() 调用中遇到了 COMException。
【解决方案2】:

我遇到了同样的问题,在一台装有 Excel 版本 16.0.10730.20264 32 位的 Windows 7 计算机上,代码运行良好,没有问题。但是,在具有相同 Excel 安装版本的 Windows 10 计算机上,宏将在 Sheets.Add 或 Worksheets.Add 行之后立即停止执行。我发现这只发生在我试图向包含 VBA 代码的工作簿添加工作表的情况下。该问题是由计算机上的宏安全设置引起的。如果在打开工作簿之前将自动化安全性设置为低,则不应再收到错误:Application.AutomationSecurity = msoAutomationSecurityLow

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多