Если вы много работаете с документами, полученными от других людей, вам может потребоваться удалить текстовые поля в этих документах. Если в документе всего одно или два текстовых поля, их несложно выделить и удалить. А что, если текстовых полей 30, 40 или больше?

Удаление их по отдельности может стать утомительным занятием.

Одно из возможных решений — метод «грубой силы». Выполните следующие действия:

  1. В своем документе нажмите Ctrl + A. Выбирается весь документ.

  2. Нажмите Ctrl + C. Документ теперь находится в буфере обмена.

  3. Откройте новый пустой документ.

  4. Убедитесь, что на ленте отображается вкладка «Главная».

  5. Щелкните стрелку вниз под инструментом «Вставить» (в левой части ленты) и выберите «Специальная вставка». Word отображает диалоговое окно Специальная вставка. (См. Рис. 1.)

  6. В списке форматов выберите «Неформатированный текст».

  7. Щелкните ОК.

Текст документа без текстовых полей теперь находится в новом документе. Очевидный недостаток этого подхода заключается в том, что другое форматирование исходного документа также теряется, и вам необходимо переформатировать весь документ. (Я сказал вам, что это был метод грубой силы.)

Если вы хотите избавиться только от текстовых полей, самое быстрое решение — использовать макрос. Следующий макрос быстро удалит все текстовые поля в документе:

Sub RemoveTextBox1()

Dim shp As Shape     For Each shp In ActiveDocument.Shapes         If shp.Type = msoTextBox Then shp.Delete     Next shp End Sub

Вы должны понимать, что этот макрос удаляет все текстовые поля и их содержимое. Другими словами, если текстовое поле используется для размещения текста, то текст в этом текстовом поле удаляется вместе с самим текстовым полем.

Если вы предпочитаете переносить текст из текстовых полей в документ до удаления текстового поля, то небольшое изменение вышеуказанного макроса будет работать:

Sub RemoveTextBox2()

Dim shp As Shape     Dim oRngAnchor As Range     Dim sString As String

For Each shp In ActiveDocument.Shapes         If shp.Type = msoTextBox Then             ' copy text to string, without last paragraph mark             sString = Left(shp.TextFrame.TextRange.Text, _               shp.TextFrame.TextRange.Characters.Count - 1)

If Len(sString) > 0 Then                 ' set the range to insert the text                 Set oRngAnchor = shp.Anchor.Paragraphs(1).Range                 ' insert the textbox text before the range object                 oRngAnchor.InsertBefore _                   "Textbox start << " & sString & " >> Textbox end"

End If             shp.delete         End If     Next shp End Sub

Когда этот макрос будет готов, вы можете выполнить поиск по запросу «Начало текстового поля», и вы окажетесь в начале текста, который раньше был в текстовых полях, которые теперь исчезли из вашего документа. Затем вы можете отредактировать текст, чтобы он выглядел так, как вы хотите. Поймите также, что все «особенное» в тексте, например таблицы, преобразуется макросом в обычный текст. Это означает, что макрос может привести к значительному объему работы, которую необходимо выполнить с форматированием переданного текста.

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (9169) относится к Microsoft Word 2007, 2010 и 2013.

Вы можете найти версию этого совета для старого интерфейса меню Word здесь:

link: / word-Removing_All_Text_Boxes_In_a_Document [Удаление всех текстовых полей в документе].