更新工作簿中的四个链接

我正在尝试更新我创build的工作簿中的四个链接。 我使用我在网上find的东西拼凑了下面的代码。 我想要replace的链接具有基于date和状态的dynamic文件名。 我希望excel命令链接名称的方式与编辑链接窗口中的相同。 看来情况并非如此。

我遇到的问题是,我打算将varlink(1)的链接replace为replacevarlink(4)的链接。 无论如何要确保我用“损失”链接等replace“损失”链接?

Sub UpDateLinks() Dim Date1 As String Dim StateAbbrev As Variant Dim varLinks As Variant Dim i As Integer Sheets("Inputs").Select ActiveSheet.Range("StateAbbrev").Activate StateAbbrev = ActiveCell.Value Date1 = Range("AD1") varLinks = ActiveWorkbook.LinkSources(xlExcelLinks) ActiveWorkbook.ChangeLink _ Name:=varLinks(1), NewName:="F:\MyHouse\" & Date1 & "\" & StateAbbrev & "\Home\" & StateAbbrev & " Loss Trends " & Date1 & ".xlsm", _ Type:=xlExcelLinks ActiveWorkbook.ChangeLink _ Name:=varLinks(2), NewName:="F:\MyHouse\" & Date1 & "\" & StateAbbrev & "\Home\" & StateAbbrev & " Prem Trends " & Date1 & ".xlsm", _ Type:=xlExcelLinks ActiveWorkbook.ChangeLink _ Name:=varLinks(3), NewName:="F:\MyHouse\" & Date1 & "\" & StateAbbrev & "\Home\" & StateAbbrev & " Fast Track Loss Trends " & Date1 & ".xlsm", _ Type:=xlExcelLinks ActiveWorkbook.ChangeLink _ Name:=varLinks(4), NewName:="F:\MyHouse\" & Date1 & "\Home\" & StateAbbrev & " Section A " & Date1 & "-Revised.xlsx", _ Type:=xlExcelLinks End Sub 

如果您循环访问每个链接并使用Select Case来确定您正在使用哪个链接,则可以确定要更改的正确链接。

请参阅下面的代码,我根据您在OP中的内容进行了修改。

 Sub UpDateLinks() Dim Date1 As String Dim StateAbbrev As String, sLink As String, sNewName as String Dim varLinks As Variant Dim i As Integer Dim ws As Worksheet Set ws = Sheets("Inputs") With ws StateAbbrev = .Range("StateAbbrev") Date1 = .Range("AD1") End With varLinks = ActiveWorkbook.LinkSources(xlExcelLinks) For i = 1 To UBound(varLinks) Dim x As Integer If InStr(1, varLinks(i), "Loss Trends") Then sLink = "Loss Trends" If InStr(1, varLinks(i), "Prem Trends") Then sLink = "Prem Trends" If InStr(1, varLinks(i), "Fast Track Loss Trends") Then sLink = "Fast Track Loss Trends" If InStr(1, varLinks(i), "Section A") Then sLink = "Section A" sNewName = "F:\MyHouse\" & Date1 & "\" & StateAbbrev & "\Home\" & StateAbbrev & " " & sLink & " " & Date1 & ".xlsm" If sLink = "Section A" Then sNewName = Replace(sNewName,".xlsm","-Revised.xlsm") ActiveWorkbook.ChangeLink _ Name:=varLinks(i), NewName:=sNewName, Type:=xlExcelLInks Next End Sub