2015-11-10 148 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 

如果您隔離您應該返回到正常的運行