1

Тема: Поиск фраз и создание из них заголовков

Добрый день! Задача такова: есть файл с инструкциями к препаратам(окола 100 с одинаковой структурой), который необходимо отформатировать, а именно применить к определенным повторяющимся фразам "Показания", "Противопоказания", "Дозировка", "Лекарственная форма" и т.д. применить стиль заголовка 3. Возможна ли оптимизация работы? Раньше делала через "Найти"-"Выделить все"- Стиль 3. По работе таких документов очень много.

2

Re: Поиск фраз и создание из них заголовков

belleflorezel пишет:

Добрый день! Задача такова: есть файл с инструкциями к препаратам(окола 100 с одинаковой структурой), который необходимо отформатировать, а именно применить к определенным повторяющимся фразам "Показания", "Противопоказания", "Дозировка", "Лекарственная форма" и т.д. применить стиль заголовка 3. Возможна ли оптимизация работы? Раньше делала через "Найти"-"Выделить все"- Стиль 3. По работе таких документов очень много.

Обычно задачи такого рода автоматизируются написанием VBA-макроса обработки текста. Для работы необходимо изготовить файл конкорданса, отладочный документ и сам макрос. Конкорданс - это файл масок, отвечающих возможным заголовкам. В прицепе к сообщению я разместил пример отладочного документа и файл конкорданса. Обработку (gjckr установки макросов) рекомендую проводить в такой последовательности:
1. Открыть файл ключевых слов keywords_headings.docx и проверить его. Символ звездочки используется для обозначения произвольной последовательности символов (можно употреблять и другие спецсимволы, которые допускает оператор Like языка VBA).
2. Открыть основной файл (не закрывая файла ключевых слов).
3. Выполнить макрос MarkHeadings.
Убедивщись, что обработка проведена корректно, обработайте ваш реальный документ с помощью  макроса MarkHeadings.
Примечание: в макросе MarkHeadingsByKeywords введено допущение, что абзац потенциального заголовка не содержит 4 или более слов (чтобы отсечь "ложные срабатывания").
Далее привожу текст макросов MarkHeadings и MarkHeadingsByKeywords.

Sub MarkHeadings()
MarkHeadingsByKeywords "keywords_headings.doc*", "Heading 3"
End Sub

Sub MarkHeadingsByKeywords(Keyw_Doc As String, heading_stylename As String)
'Marks keyword-related paragraphs in the main document with definite syle
Dim kw As Variant
Dim para As Paragraph
Dim Main_Document As String
Dim Keyw_Document As String
Dim kwdoc_found As Boolean
Dim paratext As String
Dim ikw As Long
Dim pw_cnt As Long

'1. Check for the keywords file opened
Main_Document = ActiveDocument.Name
kwdoc_found = False
For Each doc In Documents
    If UCase$(doc.Name) Like UCase$(Keyw_Doc) Then
        kwdoc_found = True
        Keyw_Doc = doc.Name
    End If
Next doc
If kwdoc_found <> True Then
   MsgBox Keyw_Doc & " file is not loaded"
   GoTo e_MHBK
End If

'2. Prepare the keywords array
Documents(Keyw_Doc).Activate
kw = Split(Documents(Keyw_Doc).Range.text, Chr$(13))

'3. Scan the main file and shade the matching keywords.
Documents(Main_Document).Activate
Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst
For Each para In Documents(Main_Document).Paragraphs
    pwcnt = para.Range.Words.count
    If pw_cnt < 4 Then 'if a paragraph contains less than N words, it seems to be a heading
        paratext = para.Range.text
        For ikw = 0 To UBound(kw)
            next_kw = Trim$(CStr(kw(ikw)))
            If next_kw <> "" Then 'omit empty keywords
                If paratext Like next_kw Then
                    'Apply heading style to the paragraph
                    para.Range.Select
                    On Error Resume Next
                    para.style = Documents(Main_Document).Styles(heading_stylename)
                    On Error GoTo 0
                    GoTo mk_next_para
                End If
            End If
        Next ikw
    End If
mk_next_para:
Next
Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst
e_MHBK:
End Sub

3

Re: Поиск фраз и создание из них заголовков

yshindin пишет:

Поправка:
. . .
Обработку (после установки макросов) рекомендую проводить в такой последовательности:
. . .

4

Re: Поиск фраз и создание из них заголовков

yshindin пишет:

В прицепе к сообщению я разместил пример отладочного документа и файл конкорданса.
. . .

Забыл файлы прикрепить ((
Во вложении тестовый файл для обработки Receipts.docx

Post's attachments

Receipts.docx 55.36 Кб, 2 скачиваний с 2016-10-21 

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

5

Re: Поиск фраз и создание из них заголовков

yshindin пишет:

В прицепе к сообщению я разместил пример отладочного документа и файл конкорданса.
. . .
Во вложении файл ключевых слов keywords_headings.docx

Post's attachments

keywords_headings.docx 30.44 Кб, 1 скачиваний с 2016-10-21 

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