我想出了一些代码来自动更新链接以满足我的某些需求
我的文件夹的层次结构是:
- 父文件的父文件夹
-SubFolder 1,文件1
-SubFolder 2,文件2.1文件2.2 ...
主文件调用主宏并打开链接到父文件和文件的所有文件2.x 1.我的代码是
Private Sub Workbook_Open()
Application.DisplayAlerts = False
oldlinks = ThisWorkbook.LinkSources(xlExcelLinks)
For i = 1 To UBound(oldlinks)
Filename = Right(oldlinks(i), Len(oldlinks(i)) - InStrRev(oldlinks(i), "\"))
If Filename = "file1" Then
newlink = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") - 1) & "\SubFolder1\" & Filename
ElseIf Filename = "ParentFile" Then
newlink = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") - 1) & "\" & Filename
End If
If newlink <> oldlinks(i) Then
ThisWorkbook.ChangeLink Name:=oldlinks(i), NewName:=newlink, Type:=xlExcelLinks
End If
Next i
Application.DisplayAlerts = True
End Sub
这似乎起作用,今天我偶然发现错误1004在线
ThisWorkbook.ChangeLink Name:=oldlinks(i), NewName:=newlink, Type:=xlExcelLinks
在我看来,它可能不起作用,因为父文件的根比以前更长,我测试了它:它仍然有效,如果路径字符串的长度(我得到左(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path,&#34; \&#34;) - 1))更短。
我无法在here中找到任何提及这种限制的内容。有没有人遇到过它?
提前致谢