2013-03-11 69 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