После специальной вставки ссылки из диапазона ячеек из Excel в Word (2013) поле выглядит следующим образом:
{ LINK Excel.Sheet.12 "D:\\RelativePath\\1\\work\\tmp.xlsx" Sheet1!NamedRange \a \p }
Если вы переместите источник (.xlsx)и получатель (.docx) в папку 2, вам нужно изменить ссылку в поле LINK так, чтобы она выглядела так:
{ LINK Excel.Sheet.12 "D:\\RelativePath\\2\\work\\tmp.xlsx" Sheet1!NamedRange \a \p }
Когда таких полей много,это неудобно.
Я попробовал и это:
{ LINK Excel.Sheet.12 "...\\...\\work\\tmp.xlsx" Sheet1!NamedRange \a \p }
и это:
{ LINK Excel.Sheet.12 "~\\work\\tmp.xlsx" Sheet1!NamedRange \a \p }
но ничего не работает.
Это тоже не работает:
Как создать абсолютные гиперссылки и относительные гиперссылки в документах Word
Можно ли указать в поле LINK не абсолютное значение,но относительный адрес источника?
Upd @ Синди Мейстер предложила решение, и после некоторого уточнения код работает нормально.
Вот он:
Sub updateLINKs()
Dim doc As Word.Document
Dim fld As Word.Field
Dim sFilePath As String, sFileName As String
Set doc = ActiveDocument
sFilePath = doc.Path
For Each fld In doc.Fields
If fld.Type = wdFieldLink Then
If fld.Result.InlineShapes.Count > 0 And _
InStr(fld.OLEFormat.ClassType, "Excel") And _
fld.LinkFormat.SourcePath <> sFilePath Then
sFileName = fld.LinkFormat.SourceName
fld.LinkFormat.SourceFullName = sFilePath & "\" & sFileName
End If
End If
Next
End Sub