VBA更新外部链接导致运行时错误

时间:2018-12-06 22:25:31

标签: excel vba external

更新excel外部链接的非常简单的VBA代码是

ThisWorkbook.UpdateLink Name:=ThisWorkbook.linkSources, Type:=xlLinkType.xlLinkTypeExcelLinks

但是我在这里发现了一件事,而且我没有在线找到任何文档来解释这一点。如果打开链接的excel,或者说 linkStatus xlLinkStatusSourceOpen ,则上面的代码将导致运行时错误: 1004,“对象_Workbook的方法UpdateLink失败” 。您可以轻松复制我认为的错误。如果您手动转到Excel功能区上的“数据”选项卡,请单击“编辑链接”,再单击“更新值”。一切都很好。 VBA行为和excel手动操作行为的不一致很奇怪。有人知道为什么吗?谢谢

1 个答案:

答案 0 :(得分:1)

如果源工作簿已打开,则

Application.Calculate

将为您完成工作!


或者从技术上讲,下面是理解和解决该问题的较长代码:

Public Function IsWorkbookOpen(sFileName) As Boolean
    On Error Resume Next
    Open sFileName For Binary Access Read Lock Read As #1
    Close #1
    FileInUse = IIf(Err.Number > 0, True, False)
    On Error GoTo 0
End Function


Sub Update_Links()
    Dim wbkPath As String

    'Update formulas/links for all the open source workbooks
    Application.Calculate
    For Each wbkPath In ThisWorkbook.LinkSources
        'Update formulas/links for all the closed source workbooks
        If Not IsWorkbookOpen(wbkPath) Then
            ThisWorkbook.UpdateLink Name:=ThisWorkbook.LinkSources, Type:=XlLinkType.xlLinkTypeExcelLinks
            Exit For
        End If
    Next

End Sub