如果链接到工作簿已关闭,则VBA代码将更新链接

时间:2015-01-30 11:20:45

标签: excel vba excel-vba excel-2007

我有一个工作簿,其中有许多其他工作簿的链接。理想情况下我想编码:当我打开包含链接的工作簿时,将更新链接,但仅当链接到的工作簿未打开时(在我的PC或网络上的其他用户的PC上,可以访问它)。 这是因为:

  • a)如果工作簿已经打开,则链接应该仍然更新,
  • b)更新已经打开的工作簿链接似乎会导致错误。

我希望我有意义,请告诉我,如果我不是。 谢谢。

1 个答案:

答案 0 :(得分:1)

试试这个

Sub UpdateLinks()
    Dim v As Variant, i As Long
    v = ThisWorkbook.LinkSources(XlLink.xlExcelLinks)
    For i = 1 To UBound(v)
        If Not FileInUse(v(i)) Then
            Workbooks.Open (v(i))
        End If
    Next i
    ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
End Sub

Public Function FileInUse(sFileName) As Boolean 'Checks if a workbook is open
    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