如何在Excel VBA 2010中清晰地断开链接

如何在Excel VBA 2010中清晰地断开链接,excel,vba,Excel,Vba,我试图以编程方式断开所有链接,然后在工作簿中重新创建它们 我得到了一些VBA代码,可以在Excel2010中清晰地断开Excel链接,但我总是遇到的问题是,每次我重新创建链接时,Excel都会提示我 以下是我正在做的: 以下是断开链接过程: Sub BreakLinks() vLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks) ' Break all links in the active workboo

我试图以编程方式断开所有链接,然后在工作簿中重新创建它们

我得到了一些VBA代码,可以在Excel2010中清晰地断开Excel链接,但我总是遇到的问题是,每次我重新创建链接时,Excel都会提示我

以下是我正在做的:

以下是断开链接过程:

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
以下是主要部分: *请注意,我分配此公式的最后一行是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提示,并干净地重新创建我的公式/链接。

您可以尝试使用Application.DisplayAlerts:

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

我对上面的断开链接仍然有两个问题:1)如果旧工作簿仍然存在,它将不断在链接中包含旧工作簿位置(除了我新链接的工作簿。2)如果旧工作簿不存在,我根本无法断开链接(显然是因为找不到旧源)您可能需要检查工作簿中是否有其他链接,除了在公式中,它们可以隐藏在命名范围、条件格式或数据验证中。我在断开这些区域中嵌入的链接时遇到了问题,但我最终总能找到并手动断开它们。谢谢Ross。我可以手动打破它们,因为我确切地知道我的公式和链接在哪里。然而,当我追踪我的代码并添加我的第三个公式(即使用Bloomg excel插件的bloomberg BDH()api调用)时,我的旧链接又回来了!非常奇怪……好像有些东西是硬编码的。@鲍勃,那么你可以断开链接,保存工作簿,重新打开它,而链接仍然不存在?