Изменение путей к связанным файлам в документе Word с более чем 100 связанными текстовыми файлами - PullRequest
0 голосов
/ 25 марта 2020

Я хочу, чтобы в документе Word с более чем 100 связанными текстовыми файлами изменилось имя пути в ссылке на текстовый файл. Я скопировал макрос, который точно должен делать то, что я хочу, но я продолжаю получать ошибку 91 в строке ".SourceFullName = Replace (.SourceFullName, oldFilePath, newFilePath)". Я пытался обойти это, но я не могу найти решение.

Кто-нибудь знает, как решить эту проблему?

Я использовал подобный код в макросе Word, но это дает ту же проблему.

Ниже кода VBA, с которым я работаю в Excel.

Sub UpdateWordLinks()
Dim oldFilePath As String
Dim newFilePath As String
Dim sourceFileName As String
Dim newFileName As String
Dim wrdApp As Object
Dim wrdDocument As Object
Dim i As Integer
Dim Counter As Integer

'The file name and path of the file to update
sourceFileName = "c:\test.docx"
'The old file path as a string (the text to be replaced)
oldFilePath = "R:\Manuals\"
'The new file path as a string (the text to replace with)
newFilePath = "C:\NL\Manuals\"
'Set the variable to the Word Application
Set wrdApp = CreateObject("Word.Application")
'Make the Word application visible
wrdApp.Visible = True
'Set the variable to the Word Document
Set wrdDocument = wrdApp.Documents.Open(sourceFileName)
'Use Replace to change the oldFilePath to the newFilePath on the Field code
Counter = wrdDocument.Fields.Count
For i = 1 To Counter
wrdDocument.Fields(i).Open
    With wrdDocument.Fields(i).LinkFormat
        .SourceFullName = Replace(.SourceFullName, oldFilePath, newFilePath)
    End With
Next i
'Update the links
wrdDocument.Fields.Update
'Save, close and quit the application
wrdDocument.Save
wrdDocument.Close
wrdApp.Quit
'Release the memory
Set wrdApp = Nothing
Set wrdDocument = Nothing
End Sub

1 Ответ

1 голос
/ 26 марта 2020

Вам необходимо проверить, имеет ли поле свойство .LinkFormat. Например:

For i = 1 To Counter
  With wrdDocument.Fields(i)
    If Not .LinkFormat Is Nothing Then
      With .LinkFormat
        .SourceFullName = Replace(.SourceFullName, oldFilePath, newFilePath)
      End With
    End If
  End With
Next I

Ваша:

wrdDocument.Fields(i).Open

строка также может вызвать ошибку.

Если ваши ссылки используют поля INCLUDETEXT, их пути можно изменить для автоматического обновления без необходимости макроса. См .: https://www.msofficeforums.com/word/38722-word-fields-relative-paths-external-files.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...