2015-11-10 117 views
2

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

对于我使用ActiveSheet.Hyperlinks.Delete命令,它工作正常,并没有实际上采取任何时候...

所有这一切,直到我已打开包含超链接在同一时间两个工作簿。在这种情况下,相同的命令需要更多时间(分钟)才能完成。它完成它的工作,只从活动页面删除超链接,但时间更长。看起来不知何故,带有超链接的其他工作表正在放慢速度。

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

有人可以帮助我克服这一点吗?

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

+0

如果我试图重现此问题的工作簿,这将有助于了解的版本Excel以及是否更改了有关超链接或校对的任何选项(Alt + F,T)►自动更正►自动套用格式。 – Jeeped

+0

Excel版本是2010标准版,我不知道对超链接或自动格式设置所做的任何更改。但是,这些表中还有许多其他宏。但我已经尝试过调试,其他所有命令都可以正常工作,除了在继续之前几分钟内完全停止的Thjis之外,所以我相信其他宏可能不会妨碍它。 – JakubAsgard

+0

我玩弄了自己的一些选项,但最长的时间是我删除了ActiveSheet上的7500个超链接(带有两个工作簿,超链接打开)是00:00:00.426,请用'Application.EnableEvents = False' 'Application.Calculation = xlCalculationManual';甚至可能是'Application.ScreenUpdating = False'。请记住把所有的东西都打开。 – Jeeped

回答

0

这可能不太理想,但我会考虑用检查来启动代码,以查看其他工作簿是否在实例中打开,如果他们保存了活动工作簿,请打开一个新的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 

如果您隔离您应该返回到正常的运行