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