如何使用VBA更新Excel中的文件链接

How to update file links in Excel using VBA

提问人:Chehak Agarwal 提问时间:11/15/2023 最后编辑:JohnMChehak Agarwal 更新时间:11/18/2023 访问量:43

问:

在我的 Excel 工作表中,我有一些文件链接到它,这些文件来自两个文件夹 c/desktop/2022/user、c/desktop/2022/source - 旧文件夹。这些文件的文件名位于 j 列中。现在我想编写一个宏,它会自动更新 excel 中链接的文件,其中包含文件名在 d 列中的相应文件,这些文件可以在文件夹 c/desktop/2023/user , c/desktop/2023/source- new 文件夹中找到。

我尝试了下面的宏,但代码将我带到文件夹位置 c/desktop/2023/user 以选择文件以更新每个文件的文件链接。我希望这也可以由宏本身完成,我希望代码在两个文件夹 c/desktop/2023/user/、c/desktop/2023/source 中查找文件

Sub UpdateLinks()
    Dim oldFileName As String
    Dim newFilePath As String
    Dim i As Long
    
    ' Iterate through all rows in Column J
    For i = 1 To Cells(Rows.Count, 10).End(xlUp).Row
        ' Check if the cell in Column J is not empty
        If Cells(i, 10).Value <> "" Then
            ' Get the old file name
            oldFileName = Cells(i, 10).Value
            
            ' Get the new file path from Column D
            newFilePath = "c/desktop/2023/user" & Cells(i, 4).Value
            
            ' Update the link
            On Error Resume Next
            ThisWorkbook.ChangeLink Name:=oldFileName, NewName:=newFilePath, Type:=xlExcelLinks
            On Error GoTo 0
        End If
    Next i
End Sub
Excel VBA

评论

0赞 Darren Bartrup-Cook 11/15/2023
您的文件名单元格是否在文件名的开头?缺少它将返回类似 c/desktop/2023/user12345.xlsx 而不是 c/desktop/2023/user/12345.xlsx 的内容/newFilePath = "c/desktop/2023/user" & Cells(i, 4).Value
0赞 Chehak Agarwal 11/15/2023
文件名在开始时没有 /...。我刚刚在newFilePath = “c/desktop/2023/user/” & Cells(i, 4)中包含了/。价值
0赞 Darren Bartrup-Cook 11/15/2023
这是否阻止了它向你询问位置?它不会搜索这两个文件夹,但如果文件在文件夹中,它现在应该可以工作。我还会删除 - 如果链接更新失败,这将隐藏错误消息,用户会认为一切正常。如果找不到文件,最好显示一条消息。userOn Error Resume Next
0赞 Chehak Agarwal 11/15/2023
是的,但是代码将我带到文件夹 c/desktop/2023/user/,现在我必须选择要更新文件的文件,所以基本上代码将用于数据>编辑链接>选择文件>选择更新链接>转到文件夹 c/desktop/2023/user/,然后从这里手动选择我想通过代码完成的文件本身。

答: 暂无答案