1

Тема: Пакетное удаление форматирования из документов Word

Есть несколько десятков документов Word. Они содержат не просто текст, но и поля, закладки, форматирование... Нужно пакетным способом удалить это всё и оставить только простой текст (на месте полей, закладок... и без выделения жирным шрифтом...)

2

Re: Пакетное удаление форматирования из документов Word

Добрый день!

Предлагаю Вашему вниманию макрос для пакетной обработки всех файлов Word в текущей папке (в которой находится активный файл).
Макрос был представлен нашим экспертом Yshindin (http://wordexpert.ru/forum/viewtopic.php?id=2503) и немного изменен мной.


Sub ProcessFiles()
Dim mypath As String
Dim MyFile As String
Dim adoc As Document
'Определение пути к текущей папке
mypath = ActiveDocument.Path + "\"
MyFile = Dir(mypath)
Do While MyFile <> ""
    'Производится перебор всех файлов в текущей папке
    If MyFile Like "*.doc*" Then
        Set adoc = Nothing
        On Error Resume Next
        'Открытие очередного документа
        Set adoc = Documents.Open(mypath & MyFile)
        On Error GoTo 0
        If Not (adoc Is Nothing) Then
            'Обработка очередного документа
            ProcessFile
        End If
       'Сохранение и закрытие очередного документа
        adoc.Close savechanges:=wdSaveChanges
    End If
    MyFile = Dir
Loop
End Sub
Sub ProcessFile()
'Функция для обработки очередного документа (файла)
    'Чистка верхнего колонтитула
    Application.Run MacroName:="ViewHeader"
    Selection.WholeStory
    Selection.Delete
    Selection.EscapeKey
    'Чистка нижнего колонтитула
    Application.Run MacroName:="ViewFooter"
    Selection.WholeStory
    Selection.Delete
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
    Selection.EscapeKey
End Sub

В данном примере функция ProcessFile производит очистку колонтитулов.
Вы можете вставить в эту функцию все действия по пакетной обработке файлов, удалению форматирования и т.д., которые Вам нужны.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: Пакетное удаление форматирования из документов Word

а как из поля с текстом сделать простой текст?

4

Re: Пакетное удаление форматирования из документов Word

intersk пишет:

а как из поля с текстом сделать простой текст?

Попробуйте следующий доступ к текстам текстовых полей:

Sub FieldsToText1()
  Dim s As Shape
    For Each s In ActiveDocument.Shapes
        MsgBox (s.TextFrame.ContainingRange.Text)
    Next
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

5

Re: Пакетное удаление форматирования из документов Word

Проблема заключается в том, что текстовое поле вероятно не привязано к строкам текста, и непонятно, в какое место текста размещать содержимое текстового поля.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

6

Re: Пакетное удаление форматирования из документов Word

Alex_Gur пишет:

Проблема заключается в том, что текстовое поле вероятно не привязано к строкам текста, и непонятно, в какое место текста размещать содержимое текстового поля.

Если удастся программно определить местоположение текстового поля на листе, то можно будет рассчитать приблизительно номер строки на этом листе, в которую можно будет скопировать содержимое текстового поля.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

7

Re: Пакетное удаление форматирования из документов Word

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

    For i = ActiveDocument.Shapes.Count To 1 Step -1
        If ActiveDocument.Shapes(i).Type = msoTextBox Then
            'MsgBox (ActiveDocument.Shapes(i).TextFrame.ContainingRange.Text)

             ' удаление текстового поля
             ActiveDocument.Shapes(i).Delete
        End If
    Next i

Также обратите внимание на проверку:

If ActiveDocument.Shapes(i).Type = msoTextBox Then

Текстовое поле должно иметь тип msoTextBox.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

8

Re: Пакетное удаление форматирования из документов Word

всех поблагодарил. Ребята сделайте готовый пожалуйста файл. Я ведь вообще не программист. Для наглядности прилагаю часть файла в котором я работал и откуда надо убрать поля и форматирование.

Post's attachments

22135.docx 36.21 Кб, 2 скачиваний с 2016-07-15 

You don't have the permssions to download the attachments of this post.

9

Re: Пакетное удаление форматирования из документов Word

Такие поля, как у Вас, и форматирование удаляются легко.
Попробуйте так:

Sub PlainText1()
    Selection.WholeStory
    Selection.Cut
    Selection.PasteAndFormat (wdFormatPlainText)
End Sub

Макрос удаляет весь текст и копирует его в тот же файл в формате PlainText.
Можно будет макросом открыть новый файл и скопировать в него, чтобы не портить оригинал.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

10

Re: Пакетное удаление форматирования из документов Word

Alex_Gur пишет:

Такие поля, как у Вас, и форматирование удаляются легко.
Попробуйте так:

Sub PlainText1()
    Selection.WholeStory
    Selection.Cut
    Selection.PasteAndFormat (wdFormatPlainText)
End Sub

Макрос удаляет весь текст и копирует его в тот же файл в формате PlainText.
Можно будет макросом открыть новый файл и скопировать в него, чтобы не портить оригинал.

а если у меня таких фалов около 100 , то придется открывать каждый?

11

Re: Пакетное удаление форматирования из документов Word

P.S. хотелось бы сохранить разметку текста по абзацам и т.д. ...

12

Re: Пакетное удаление форматирования из документов Word

intersk пишет:

а если у меня таких фалов около 100 , то придется открывать каждый?

Выше (http://wordexpert.ru/forum/viewtopic.ph … 685#p15685) было описано, как обрабатывать все файлы Word в папке.

P.S. хотелось бы сохранить разметку текста по абзацам и т.д. ...

Абзацы должны сохраниться.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.