Если вы много работаете с документами, полученными от других людей, вам может потребоваться удалить текстовые поля в этих документах. Если в документе всего одно или два текстовых поля, их несложно выделить и удалить. А что, если текстовых полей 30, 40 или больше? Удаление их по отдельности может быстро утомить.
Одно из возможных решений – это метод «грубой силы». Выполните следующие действия:
- В своем документе нажмите Ctrl + A . Выбран весь документ.
- Нажмите Ctrl + C . Теперь документ находится в буфере обмена.
- Откройте новый пустой документ.
- Выберите «Специальная вставка» в меню «Правка». Word отображает диалоговое окно Специальная вставка. (См. Рис. 1.)
- В списке форматов выберите Неформатированный текст.
- Нажмите OK.
Рис. 1. Диалоговое окно Специальная вставка.
Текст документа без текстовых полей теперь находится в новом документе. Очевидным недостатком этого подхода является то, что другое форматирование исходного документа также теряется, и вы должны переформатировать весь документ. (Я сказал вам, что это был метод грубой силы.)
Если вы хотите избавиться только от текстовых полей, то самое быстрое решение – использовать макрос. Следующий макрос быстро удалит все текстовые поля в вашем документе:
Sub RemoveTextBox1 () Dim shp As Shape For each shp In ActiveDocument.Shapes If shp.Type = msoTextBox Then shp.Delete Next shpEnd Sub
Вы должны понимать, что этот макрос удаляет все текстовые поля и их содержимое. Другими словами, если текстовое поле используется для размещения текста, то текст в этом текстовом поле удаляется вместе с самим текстовым полем.
Если вы предпочитаете переносить текст из текста поля в документ, перед удалением текстового поля будет работать небольшая модификация вышеуказанного макроса:
Sub RemoveTextBox2 () Dim shp As Shape Dim oRngAnchor As Range Dim sString As String For Each shp In ActiveDocument.Shapes Если shp.Type = msoTextBox Then 'копирует текст в строку без знака последнего абзаца sString = Left (shp.TextFrame.TextRange.Text, _ shp.TextFrame.TextRange.Characters.Count - 1) Если Len ( sString)> 0 Then 'установите диапазон для вставки текста Set oRngAnchor = shp.Anchor.Paragraphs (1) .Range' вставьте текст текстового поля перед объектом диапазона oRngAnchor.InsertBefore _ "Textbox start Textbox end" End If shp .delete End If Next shpEnd Sub
Когда этот макрос будет готов, вы можете выполнить поиск «Начало текстового поля», и вы будете в начале Текст, который раньше был в текстовых полях, теперь удален из вашего документа. Затем вы можете отредактировать текст, чтобы он выглядел так, как вы хотите.