Makro znajdujące częste pomyłki

Jesteś tak dobry, jak dobra jest Twoja technika. W epoce internetu, e-booków, skanerów, wszechogarniającej digitalizacji sama staranność w pracy edytorskiej jest niewystarczająca — trzeba jeszcze posługiwać się nowoczesnymi narzędziami i technikami.

Word nie podkreśla wszystkich błędów. Wiemy np., że niektóre wyrazy i wyrażenia w określonych kontekstach są poprawne, a w innych nie. Łatwo je przeoczyć. Z tych niepodkreślanych potencjalnych, nieraz nawet pospolitych błędów można by utworzyć długą listę. Jak długą? Zawierającą kilkaset elementów? Może nawet klika tysięcy. Zauważyłeś litrówkę w poprzednim zdaniu (i w tym)? Może nie. Word też tego nie „zobaczy” (podobnie jak: kliku, po porostu, tyko, milo, laska, zając się, gorę…). Ale możemy go zmusić do tego, żeby „zauważał” takie rzeczy.

Oto makro, które wyszukuje i wyróżnia dane ciągi znaków:

Sub HighlightWords()
Dim myDocRange As Word.Range
Dim Word As Word.Range
'W nawiasie podajemy, ile elementów jest na naszej liście.
Dim CiagZnakow(7) As String
Dim myString As Variant

Application.ScreenUpdating = False
Set myDocRange = ActiveDocument.Range
CiagZnakow(0) = "[Kk]lik[au]"
CiagZnakow(1) = "[Pp]o?porostu"
CiagZnakow(2) = "<[Tt]yko>"
CiagZnakow(3) = "[Mm]ilo"
CiagZnakow(4) = "<[Ll]ask[aią]>"
CiagZnakow(5) = "<[Zz]ając>"
CiagZnakow(6) = "<[Gg]or[aąęy]"
CiagZnakow(7) = "<[Ll]itrówk[aciąęo]"
'Tutaj dodajemy kolejne ciągi,
'pamiętając o powiększeniu liczby w nawiasie o 1.
'Trzeba też odpowiednio zwiększyć liczbę w nawiasie
'na początku makra, w deklaracji: Dim CiagZnakow(6) As String.

Options.DefaultHighlightColorIndex = wdRed
For Each myString In CiagZnakow
  With myDocRange.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Replacement.Highlight = True
        .Text = myString
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
Next
Application.ScreenUpdating = True
Selection.HomeKey Unit:=wdStory
End Sub

 

Makro zmieniające kolejność wyrazów

Jak wiadomo, ekonomia polityczna to nie to samo co polityczna ekonomia. Gdy w tekście często napotykamy nieodpowiedni szyk i nieustannie potrzebna jest zmiana kolejności wyrazów, możemy wyeliminować nużące ręczne ich przenoszenie i robić to błyskawicznie z wykorzystaniem poniższego makra. Ustawiamy kursor przed pierwszym wyrazem, który ma się znaleźć za wyrazem kolejnym, i uruchamiamy makro (np. skrótem Ctrl+Num1).

Sub WordOrder()

Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
 Selection.Cut
 Selection.MoveRight Unit:=wdWord, Count:=1
 Selection.Paste

End Sub

Jeśli przenosimy wyraz zaczynający się wielką literą, to stosujemy poniższe makro, które nie tylko zmienia kolejność wyrazów, lecz także wielkość liter (efektywny skrót: Ctrl+Num2).

Sub WordOrderCap()

Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
 Selection.Cut
 Selection.MoveRight Unit:=wdWord, Count:=1
 Selection.Paste
 Selection.MoveLeft Unit:=wdWord, Count:=2
 Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
 Selection.Copy
 Selection.MoveLeft Unit:=wdCharacter, Count:=1
 Selection.PasteAndFormat (wdPasteDefault)
 Selection.MoveLeft Unit:=wdCharacter, Count:=1
 Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
 Selection.Range.Case = wdNextCase
 Selection.MoveRight Unit:=wdCharacter, Count:=1
 Selection.Delete Unit:=wdCharacter, Count:=1
 Selection.MoveRight Unit:=wdWord, Count:=1
 Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
 Selection.Copy
 Selection.MoveLeft Unit:=wdCharacter, Count:=1
 Selection.Paste
 Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
 Selection.Range.Case = wdNextCase
 Selection.MoveRight Unit:=wdCharacter, Count:=1
 Selection.Delete Unit:=wdCharacter, Count:=1
 Selection.MoveLeft Unit:=wdWord, Count:=2

End Sub

Może to nie jest olśniewający kod, ale ułatwia pracę.