【问题标题】:Deleting hyperlinks performance删除超链接性能
【发布时间】:2016-02-11 02:29:12
【问题描述】:

我想通过 VBA 删除当前活动工作表上的所有超链接。

为此,我正在使用ActiveSheet.Hyperlinks.Delete 命令,它工作正常,几乎不需要任何时间...

所有这些直到我同时打开两个包含超链接的工作簿。在这种情况下,非常相同的命令需要更多时间(分钟)才能完成。它完成了它的工作,只从活动表中删除超链接,但时间更长。似乎不知何故,其他带有超链接的工作表正在减慢速度。

我可以同时打开多个工作簿,但它们不能有任何超链接才能使宏快速工作。

有人可以帮我克服这个问题吗?

实际上,我经常需要同时打开两个超链接工作簿并运行删除超链接的宏。

【问题讨论】:

  • 如果我尝试重现此行为,了解 Excel 的版本以及您是否更改了有关超链接或校对 ► 自动更正 ► 自动套用格式的任何选项(Alt+F、T)会有所帮助。
  • Excel 版本是 2010 标准版,我不知道对超链接或自动格式设置所做的任何更改。但是,这些工作表中还有许多其他宏。但是我已经尝试过调试,所有其他命令都可以正常工作,除了那个在继续之前会卡住几分钟的确切命令,所以我相信其他宏可能不会妨碍它。
  • 我尝试了一些自己的选项,但我删除 ActiveSheet 上的 7500 个超链接(打开两个满是超链接的工作簿)花费的最长时间是 00:00:00.426,请使用 @ 检查987654322@和Application.Calculation = xlCalculationManual;甚至可能是Application.ScreenUpdating = False。记得重新开启一切。
  • 好吧,我忘了禁用计算和 ScreenUpdating,但它没有任何区别。但我发现,较慢的 Excel 具有通过 VBA(Hyperlinks.Add)以编程方式添加的超链接,而另一个使用超链接函数公式的超链接。将来我会尝试将较慢的更改为也使用我们的公式而不是 VBA,但目前我不能并且仍然想找出错误在哪里......
  • 这可能听起来很傻,但尝试添加activeworkbook.activesheet.hyperlinks.delete 以获得更直接的参考

标签: vba excel hyperlink


【解决方案1】:

这可能并不理想,但我会考虑通过检查实例中是否打开其他工作簿以及是否保存活动工作簿来启动您的代码,打开一个新的 excel 实例并在新实例。然后再次运行您的代码。

像这样打开新实例:

Sub BlahBlah
if morethan1 then
    CWb = ActiveWorkbook.name
    ActiveWorkbook.save
    Dim objXL
    Set objXL = CreateObject("Excel.Application")
    objXL.Visible = True
    application.displayalerts = false
        objXL.Workbooks.Open = CWb
    application.displayalerts = True
end if
End Sub

如果您隔离工作簿,您应该返回正常运行时

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2011-07-18
    相关资源
    最近更新 更多