3

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

Вручную собираюсь: Файл -> редактировать ссылки на файлы -> выбор и нажатие на кнопку "разрыв ссылки" делает именно то, что я хочу сделать.

Я нашел некоторый код VBA для разрыва ссылок на поля, но это не помогает разорвать ссылки на мои картинки. Вот код, который я попробовал:

For Each objField In ActiveDocument.Fields
  If Not objField.LinkFormat Is Nothing Then
    objField.LinkFormat.Update
    objField.LinkFormat.BreakLink
    ActiveDocument.UndoClear
  End If
Next

Когда я нажимаю Alt + F9 в моем документе, чтобы отобразить поля, ничто не мешает моим изображениям, но другие поля (ссылки и т.д.) Расширяются / отображаются. Поэтому я предполагаю, что эти ссылки на изображения представляют собой нечто иное, чем "поля".

Как я могу разорвать эти ссылки на изображения в VBA?

Редактировать примечание Слово документ в основном представляет собой HTML-файл. Вот что вы получите, открыв .html файл в Word.

1 ответ1

1

Поскольку документ Word был на самом деле HTML-документом, открытым в Word, он не включал разметку для конкретного слова для идентификации полей. В результате работала функциональность GUI, но не решение vba, как подробно описано в вопросе. Решением было сначала сохранить документ word с новым именем (таким образом создавая разметку слова), а затем запустить макрос breakLinks.

Макрос для сохранения документа:

Sub saveAsDoc()
    Dim newName As String
    newName = ActiveDocument.Path & "\" & "fix_" & ActiveDocument.Name
    ActiveDocument.SaveAs2 FileName:=newName, FileFormat:=wdFormatDocument
End Sub

Макрос для разрыва ссылок:

Sub breakLinks()
For Each objField In ActiveDocument.Fields
  If Not objField.LinkFormat Is Nothing Then
    objField.LinkFormat.Update
    objField.LinkFormat.BreakLink
    ActiveDocument.UndoClear
  End If
Next
End Sub

Основной макрос, который должен быть выполнен из внешнего сценария. DisplayAlerts должен удостовериться, что никаких всплывающих окон нет.

Sub theTrick()
    Application.DisplayAlerts = False
    Call saveAsDoc
    Call breakLinks
    ActiveDocument.save
    Application.DisplayAlerts = True
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .