Тема: 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
Жду вопросов и комментариев.
Был этот мир глубокой тьмой окутан.
Да будет свет! И вот явился Ньютон.
Но сатана недолго ждал реванша.
Пришел Эйнштейн - и стало все, как раньше.