2013-03-11 43 views
0

我試圖以編程方式打破所有鏈接,然後在工作簿中重新創建它們。如何幹淨地打破Excel中的鏈接VBA 2010

我在Excel 2010中獲得了一些VBA代碼來乾淨地打破Excel鏈接,但是我總是遇到的麻煩是,每次我重新鏈接鏈接時,Excel都會提示我。

下面是我在做什麼:

這裏的BreakLinks過程:

Sub BreakLinks() 
    vLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks) 

    ' Break all links in the active workbook. 
    For lLink = LBound(vLinks) To UBound(vLinks) 
     ActiveWorkbook.BreakLink _ 
      Name:=vLinks(lLink), _ 
      Type:=xlLinkTypeExcelLinks 
    Next lLink 
end sub 

這裏的主要部分: *請注意,這裏我給你thisFormula最後一行就是Excel提示我有一個文件對話框,這迫使我取消或選擇我正在鏈接回我的主工作簿...

BreakLinks ' call proc to break the links 
    thisFormula = "='[DataMaster - Data Template.xlsm]MASTER'!$B" + Trim(Str(myRow))  ' reference back to master workbook 
    Range("A1").Formula = thisFormula  ' i.e. "='[DataMaster - Data Template.xlsm]MASTER'!$B32" 
    Range("B1").Formula = "=D1" 
    Range("C1").Formula = "=E1/100" 
    thisFormula = "=BDH('[DataMaster - Data Template.xlsm]MASTER'!$A" + Trim(Str(myRow)) + "," + charCode + "PX_LAST" + charCode + ",FirstDate," + charCode + " " + charCode + "," + charCode + "cols=2;rows=50" + charCode + ")" 
    Range("D1").Formula = thisFormula 

我想知道如何避免這個非常煩人的Excel提示,並乾淨地重新創建我的公式/鏈接。

回答

2

你可以嘗試使用Application.DisplayAlerts:

Application.DisplayAlerts = False 
'<statements that may invoke alerts> 
Application.DisplayAlerts = True 
+0

謝謝,我會嘗試,並讓你儘快知道。 – 2013-03-12 16:10:16

+0

我仍然有兩個問題與上面的breakLinks:1)如果舊的工作簿仍然存在,它將不斷包含鏈接中的舊工作簿位置(除了我新鏈接的工作簿2)如果舊工作簿不存在,我根本不能破壞鏈接(顯然是因爲找不到舊的源代碼) – 2013-03-12 17:09:09

+0

您可能想要檢查工作簿除了公式之外是否還有其他鏈接,它們可以隱藏在命名範圍,條件格式或數據驗證中。我遇到了中斷鏈接的問題,但我始終能夠手動查找和分解它們。 – 2013-03-12 19:05:15