1

Тема: Microsoft Word 97-2003

На удивление мало людей, более-менее разбирающихся в компьютерах, умеют работать в Word'е. Особенно странно бывает, когда секретарша, у которой Word основная рабочая программа, создаёт документы вроде такого. Это абсолютно реальный документ, утащенный с компьютера знакомых.
Ещё меньше людей настраивают Word под себя и разбираются с неочевидными с первого взгляда функциями. В качестве первого шага к углубленному изучению самой популярной программы для работы с текстами предлагаю всем желающим скачать шаблон Normal.dot (для MS Office 2003) с настроенными инструментальными панелями и тремя макросами, очень полезными при обработке текста.
Макросы Insert_Plain_Text и To_Russian просто дублируют пункты меню для ускоренного вызова нужных команд, а на макрос Del_Spaces я когда-то в 2001 году целый вечер потратил, но сил и времени с тех пор он мне сэкономил очень много. Коротко говоря, он убирает лишние пробелы из текста. Привожу его код с дополнительными комментариями, которых нет в оригинале.

Sub Del_Spaces()
'
' Del_Spaces Макрос
' Очистка текста от мусора и лишних пробелов
' Макрос создан 03.07.01 John
'
Dim Style, Response, C
Dim fl_Para, fl_Space As Boolean
Style = vbYesNo + vbCritical + vbDefaultButton2
fl_Para = False
fl_Space = False
    
' Замена переносов строки на символы конца абзаца
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^l"
    .Replacement.Text = "^p"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting

' Основной блок - начало
Selection.HomeKey Unit:=wdStory
For C = 0 To Word.ActiveDocument.Characters.Count
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend

    If Selection.Text = " " Then
        If (fl_Space = False) And (fl_Para = False) Then
            fl_Space = True
            Selection.MoveRight Unit:=wdCharacter, Count:=1
        Else
            Selection.Text = ""
        End If
    Else
        If Selection.Text = Chr(13) Then
            fl_Para = True
'            Response = MsgBox("Продолжить? S=" + Selection.Text, Style, "Обработка пробелов", "", 0)
'            If Not Response = vbYes Then GoTo Last_Line
        Else
            fl_Para = False
        End If
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        fl_Space = False
    End If
    
Next C

'Last_Line:

Selection.HomeKey Unit:=wdStory
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
If Selection.Text = " " Then Selection.Text = "" Else Selection.MoveLeft Unit:=wdCharacter, Count:=1

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = " ^p"
    .Replacement.Text = "^p"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
' Основной блок - конец

' Замена трёх подряд точек на многоточие
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "..."
    .Replacement.Text = "…"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

' Ликвидация пробелов после открывающей и перед закрывающей скобками
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "( "
    .Replacement.Text = "("
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = " )"
    .Replacement.Text = ")"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

' Уничтожение мягких переносов
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^-"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

' Дополнение к основному блоку
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^p "
    .Replacement.Text = "^p"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

End Sub

Жду вопросов и комментариев.

Здесь дважды два не четыре, а около четырех, да и то лишь в ясную погоду.
                                                                                    Андрей Лазарчук «Транквилиум»

2

Re: Microsoft Word 97-2003

Спасибо, John! Сегодня установил твой шаблон одной из сотрудниц нашего отдела кадров. Посмотрим, какие будут впечатления?

Будьте доброжелательны и Вам уделят максимум внимания smile Сайт форума http://SebeAdmin.ru

3

Re: Microsoft Word 97-2003

Я не особо разбираюсь в офисных программах, для LibreOffice есть что нибудь подобное?

4

Re: Microsoft Word 97-2003

Ярпен Зигрин пишет:

Я не особо разбираюсь в офисных программах, для LibreOffice есть что нибудь подобное?

Я с LibreOffice не работал, но, в принципе, это одна из ветвей разработки OpenOffice, значит поддерживает кучу языков программирования и сделать там можно много чего.

Здесь дважды два не четыре, а около четырех, да и то лишь в ясную погоду.
                                                                                    Андрей Лазарчук «Транквилиум»