Разрыв ссылок в большом количестве документов (Microsoft Word)
У Иэна очень много документов, которые содержат ссылки на другие документы.
(Это не гиперссылки; это фактические ссылки на документы в Word.) Ему нужно разорвать эти ссылки, и он знает, что может загружать документы и разрывать ссылки одну за другой. Однако он задается вопросом, есть ли доступный макрос, который мог бы просмотреть все документы в папке и автоматически разорвать все ссылки в этих документах.
Вручную можно разорвать ссылки, выполнив следующие действия:
-
Щелкните вкладку Файл на ленте.
-
Убедитесь, что в левой части экрана выбрано «Информация».
-
В правом нижнем углу экрана в категории «Связанные документы» щелкните «Редактировать ссылки на файлы». (Если этот параметр недоступен, это означает, что Word не считает, что в текущем документе есть ссылки.) Word отображает диалоговое окно «Ссылки». (См. Рис. 1.)
-
Выберите ссылку, которую хотите разорвать.
-
Нажмите «Разорвать ссылку». Вас попросят подтвердить ваше действие.
-
Щелкните ОК.
Если вы используете Word 2007, шаги немного отличаются:
-
Нажмите кнопку Office, а затем — Подготовить.
-
Щелкните Изменить ссылки на файлы. (Если этот параметр недоступен, это означает, что Word не считает, что в текущем документе есть ссылки.)
Word отображает диалоговое окно «Ссылки».
-
Выберите ссылку, которую хотите разорвать.
-
Нажмите «Разорвать ссылку». Вас попросят подтвердить ваше действие.
-
Щелкните ОК.
Как видите, этот процесс довольно трудоемкий, особенно если у вас много документов и каждый документ имеет несколько ссылок. Из-за трудоемкости этого процесса Ян искал способ разорвать ссылки под управлением макроса.
Чтобы сделать это в макросе, макрос должен открыть каждый документ в папке, разорвать все найденные ссылки, а затем сохранить документ.
Определить, сколько документов находится в папке, открыть и закрыть их довольно просто. Если вы хотите разорвать ссылки, макрос должен просмотреть каждое поле в документе и разорвать только те, которые используют поле LINK. Следующий макрос показывает, как это делается.
Sub RemoveLinks() Dim fleArray() As String Dim flCount As Long Dim k As Long Dim fle As String Dim fld As Field Dim currentFileName As String Dim docPath As String Dim bDirty As Boolean docPath = ActiveDocument.Path & "\" currentFileName = ActiveDocument.Name fle = Dir(docPath & "doc") flCount = -1 ReDim fleArray(0) Do While fle <> "" flCount = flCount + 1 ReDim Preserve fleArray(flCount) fleArray(flCount) = fle fle = Dir() Loop If MsgBox("There are " & flCount + 1 & " files to be processed." _ & vbCrLf & "Do you want to continue?", vbYesNo, "Break links") _ = vbNo Then Exit Sub For k = 0 To UBound(fleArray) fle = fleArray(k) Options.UpdateLinksAtOpen = False Documents.Open FileName:=docPath & fle Options.UpdateLinksAtOpen = True bDirty = False For Each fld In ActiveDocument.Fields If fld.Type = wdFieldLink Then ' Uncomment the following if link needs to be updated ' before the link is broken ' fld.LinkFormat.Update fld.LinkFormat.BreakLink bDirty = True End If Next fld If bDirty Then ActiveDocument.Save ' Only save if links broken If ActiveDocument.Name <> currentFileName Then ActiveDocument.Close Next k End Sub
Обратите внимание на цикл For Each, который просматривает каждое поле (fld) в коллекции Fields. Он проверяет, равно ли свойство Type поля wdFieldLink, что означает, что это поле LINK. Если это так, код использует метод BreakLink со свойством LinkFormat для поля, эффективно удаляя ссылку.
_Примечание: _
Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
WordTips — ваш источник экономичного обучения работе с Microsoft Word.
(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (2357) относится к Microsoft Word 2007, 2010, 2013 и 2016.