Antes de mais nada, você continua falando sobre hiperlinks. Eu acho que o que você quer dizer são fórmulas que fazem referência a outros arquivos. Aqueles não são hiperlinks. Aqui está a solução se o que você realmente quis dizer foi hiperlinks:
Para responder à sua pergunta real: Sim, há uma macro para isso. Certo. Eu acho que o que você precisa saber é o objeto Worksheet.Hyperlinks
. Você pode percorrer cada hiperlink em cada planilha e substituir o endereço com o que quiser. Aqui está um exemplo de trecho:
Sub ChangeHyperlinks()
Dim ws As Worksheet
Dim hyp As Hyperlink
For Each hyp In ws.Hyperlinks
hyp.Address = Replace(hyp.Address, "2015", "2016")
Next
End Sub
Você terá que modificá-lo se não quiser alterar todos os hyperlinks adicionando instruções condicionais como If InStr(1, hyp.Address, "\Daily Revenue15") Then
. Você pode usar o evento Workbook_Open
para ser executado toda vez que o arquivo for aberto, capturar o ano certo com base no nome do arquivo e, em seguida, executar a substituição dos hiperlinks. Sim, isso acionaria a cada hora em que o arquivo é aberto, mesmo que já esteja correto. Dependendo de quantos hiperlinks você tiver, isso pode ser bom ou pode acabar com tudo.
E aqui está um trecho de código se o que você realmente quis dizer foi fórmulas. Novamente, você terá que adaptá-lo mais às suas necessidades, mas isso deve começar.
Private Sub Workbook_Open()
Dim i As Integer
Dim srcArray As Variant
srcArray = ThisWorkbook.LinkSources(xlLinkTypeExcelLinks)
For i = 1 To UBound(srcArray)
Debug.Print srcArray(i)
ThisWorkbook.ChangeLink srcArray(i), Replace(srcArray(i), "2015", "2016")
Next
End Sub
Além disso, se você quis dizer fórmulas, sua pergunta é uma cópia de StackOverflow .