VBA 更新外部 Link 导致 运行 时间错误

VBA Update External Link cause Run Time Error

更新 excel 外部 link 的一个非常简单的 VBA 代码是

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

但是我在这里发现了一件事,而且我没有在网上找到任何文档来解释这一点。如果 linked excel 是打开的,或者说如果 linkStatusxlLinkStatusSourceOpen,上面的代码会导致 运行 time error: 1004, "Method UpdateLink of Object _Workbook failed" 你可以很容易地复制我认为的错误。如果您手动转到 Excel 功能区上的数据选项卡,请单击编辑 links,然后单击更新值。一切都很好。 VBA行为和excel手动操作行为的不一致很奇怪。有人知道为什么吗?谢谢

如果源工作簿已打开,则

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