Jak przy pomocy JAWS korzystać z VBA dla aplikacji w MS Word?

Jak przy pomocy JAWS korzystać z VBA dla aplikacji w MS Word?

Cel, to przybliżyć narzędzie dołączone do pakietu MS Office jakim jest VBA (Visual Basic for Applications).
VBA jest językiem programowania opartym na Visual Basicu w wersji 6. Jest dołączony do poszczególnych programów pakietu MS Office wraz z prostym edytorem.
vba służy do pisania makr, czyli do zautomatyzowania pewnych czynności w pracy z programem.
Kiedy wielokrotnie wykonujemy serię tych samych czynności, to Za pomocą VBA możemy zamienić te czynności w skrypt, który wykona je automatycznie za nas.
makra (makrodefinicje) w Wordzie
Programy MS Office mają dołączony rejestrator makr, który zamienia wykonywane przez nas czynności w trakcie nagrywania makra na kod VBA.
Proste makra można tworzyć nawet bez podstaw programowania.
Użytkownicy Worda, którzy nie potrafią jeszcze programować, mogą sami stworzyć wiele ciekawych automatyzacji.
Na tej bazie mogą następnie zająć się nauką podstaw programowania.

**Przykładowy dokument Word do ćwiczeń.
Przygotujemy teraz nasz przykładowy dokument, na którym będziemy ćwiczyć rejestrację i działanie makr.
Zadaniem naszego makra będzie oczyszczanie dokumentu z niepotrzebnych zawartości i elementów.
Na przykład, usuwanie pustych akapitów, zdublowanych spacji lub tabulatorów, albo zbędnych spacji na końcach akapitów.
Musimy pamiętać, że wciśnięcie klawisza enter tworzy nowy akapit, podstawowy obiekt tekstowy dokumentu Word.
Do akapitów przechodzimy skrótami
ctrl + strzałka w dół,
następny akapit, oraz
ctrl + strzałka w górę,
poprzedni akapit.
Pusty akapit powstaje kiedy wciśniemy dwukrotnie klawisz enter.
Zdarza się, że drukujemy dokument worda, który zawiera tylko jedną stronę tekstu, ale drukuje się pięć stron, w tym cztery puste.
Powodem są puste akapity w dokumencie, które nie są pomijane podczas drukowania.
Aby podejrzeć wszystkie niedrukowane znaki w dokumencie, należy wcisnąć
ctrl + shift + 8,
czyli ctrl + *.
Otwieramy w Word 2013 lub nowszym, nowy pusty dokument.
Pierwsze zdanie może wyglądać tak:
Przykładowy dokument do ćwiczeń makr.
Na końcu zdania postawiłem kropkę i wcisnąłem klawisz enter, aby utworzyć nowy akapit.
Teraz wpisuję
=RAND()
i wciskam enter.
Funkcja RAND() wypełni nasz dokument losowym tekstem, który dla Word 2016 liczy pięć akapitów, zawierających po kilka zdań.
Możemy to sprawdzić wciskając ctrl + strzałka w dół, albo ctrl + strzałka w górę.
Składnia funkcji jest następująca:
RAND(liczba akapitów, liczba zdań w akapicie).
Przechodzimy na koniec ostatniego akapitu, wciskamy klawisz enter, i dopisujemy zdanie:
Koniec przykładowego dokumentu do ćwiczeń.
Po tym zdaniu dodajemy, na przykład trzy lub cztery puste akapity.
Jesteśmy przygotowani na to, żeby napisać makro, które usunie te zbędne akapity.
Sprawdzamy, czy na górnej wstążce znajduje się karta 'Deweloper’.
Jeżeli nie, to musimy ją dodać, jak opisano poniżej, albo w inny sposób:

**dodawanie karty Deweloper do wstążki:

  1. będąc w obszarze otwartego dokumentu wciskamy klawisz alt, aby przejść do górnej wstążki
  2. na górnej wstążce otwieramy menu kontekstowe, wciskając na przykład shift + F10, z którego wybieramy
    dostosuj wstążkę,
    i wciskamy enter,
  3. na otwartej liście fokus automatycznie ustawi się na pozycji 'dostosowywanie wstążki’,
  4. wciskamy tab, i na kolejnej liście przechodzimy do pozycji wszystkie karty
  5. wciskamy tab i na liście przechodzimy do pozycji 'deweloper’,
  6. tabem przechodzimy do przycisku dodaj, i wciskamy enter
  7. kilkukrotnie wciskamy tab, aby przejść do przycisku 'ok’, i wciskamy enter

**Dodanie przycisku rejestracji makra do pasku stanu.

  1. Z obszaru otwartego dokumentu Word przechodzimy do paska stanu wciskając klawisz F6
  2. Otwieramy menu kontekstowe, na przykład wciskając shift + F10
  3. Na otwartej liście przechodzimy do pozycji
    ’Rejestracja makra’,
    i zaznaczamy ją wciskając spację

**Przechodzimy do obszaru dokumentu, używając f6, ustawiamy się na początku dokumentu i zaczynamy rejestrację makra usuwającego puste akapity.
Użyjemy funkcji 'znajdź i zamień’, ctrl + h, i tego, że symbolem klawisza enter jest '^p’.
Szukamy ciągu '^p^p’, i zamienimy wszystkie jego wystąpienia ciągiem '^p’, pojedynczy klawisz enter.
Przechodzimy do paska stanu, wciskając f6, i wciskamy enter na przycisku 'rejestracja makra’.
Pojawi się okno dialogowe z pytaniem o nazwę makra, domyślnie to może być makro1.
Możemy zaakceptować wszystkie wartości domyślne i przechodzimy do pola opis makra, gdzie możemy wpisać 'usuwanie pustych akapitów’, przechodzimy do przycisku 'ok’, i wciskamy enter.
Fokus powróci do obszaru dokumentu.
Wciskamy ctrl + h, w polu wyszukaj wpisujemy ^p^p, tabem przechodzimy do pola zamień na, wpisujemy ^p, tabem przechodzimy do przycisku zamień wszystko, i wciskamy enter.
Jeżeli Word znalazł puste akapity, to nas o tym poinformuje i oznajmi liczbę zastąpień.
Po akceptacji 'ok’ w oknie dialogowym, kursor wraca do okna znajdź i zamień, zamykamy to okno wciskając Esc;
fokus ustawia się w obszarze dokumentu;
teraz musimy zakończyć rejestrację makra;
wciskamy f6, aby przejść do paska stanu, i wciskamy enter na przycisku rejestracji makra.
Przechodzimy do obszaru dokumentu i sprawdzamy, czy makro zadziałało, to znaczy usunęło puste akapity.

Czasami musimy powtórzyć wykonanie makra, aż Word oznajmi, że nie znalazł żadnych wystąpień szukanej frazy.

Zobaczmy, jak wygląda kod vba naszego makra.
Przechodzimy na górną wstążkę wciskając klawisz alt, przechodzimy do karty 'Deweloper’, rozwijamy menu wciskając strzałkę w dół, tabem przechodzimy do przycisku makra i wciskamy enter.
Na liście makr przechodzimy do naszego makra, na przykład makro1, i tabem przechodzimy do przycisku edytuj, i wciskamy enter.
Otworzy się okno edytora vba, w którym możemy analizować napisany przez nas skrypt.

Proszę zwrócić uwagę na wcięcia poszczególnych linii kodu.

Menu edytora jest po angielsku, ale to nie jest istotne, podstawowe menu jest bardzo proste.
Makro możemy zapisać jako plik .bas;
wciskamy alt, rozwijamy zakładkę 'file’, przechodzimy do pozycji’export macro’, wciskamy enter, a dalej to już prosta sprawa.
Podobnie możemy zaimportować zewnętrzny skrypt .bas, używając opcji 'import macro’.
Powracamy do edytora Word używając
’close and return to word’,
w zakładce 'file’.
Możemy napisać nowe makro, rozszerzające funkcje poprzedniego.
Dodajmy na końcach wszystkich akapitów jedną spację, za kropką ostatniego zdania.
Dodajmy w kilku miejscach po dwie, zamiast jednej spacji.
Dodajmy zdublowane tabulatory, a także nowe puste akapity, i w jednym przebiegu usuńmy te nadmiarowe znaki, rejestrując nowe makro.
Spacja na końcu akapitu to '^w^p’, zamieniamy na '^p’;
dwie spacje to „”  „”, zamieniamy na „” „”;
podwójne tabulatory to '^t^t’, zamieniamy na '^t’;
pusty akapit, to zdublowane klawisze enter, czyli '^p^p’, zamieniamy na '^p’;
Poniżej wklejam dwa skrypty powstałe na podstawie rejestracji makra, usuwającego powyżej wymienione ciągi, a także czysty skrypt vba, powstały po oczyszczeniu zarejestrowanego skryptu z niepotrzebnych linijek kodu.
**
Sub odkurz()

’ makro odkurz
’makro rejestrowane

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
’ spacja na końcu akapitu
    With Selection.Find
        .Text = „”^w^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
’ dwie spacje na jedną
    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
’ dwa tabulatory na jeden
    With Selection.Find
        .Text = „”^t^t””
        .Replacement.Text = „”^t””
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
’ usuwa puste akapity zdublowane klawisze enter
    With Selection.Find
        .Text = „”^p^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
    ActiveWindow.ActivePane.Next.Activate
End Sub
**

**
Sub odkurz()

’ Makro odkurz
’ odkurza dokument makro napisane na podstawie makra rejestrowanego

    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = „”^w^p””
        .Replacement.Text = „”^p””
        .Forward = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
’ usuwa zdublowane spacje
    With Selection.Find
        .Text = „”  „”
        .Replacement.Text = „” „”
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
’ usuwa zdublowane tabulatory
    With Selection.Find
        .Text = „”^t^t””
        .Replacement.Text = „”^t””
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
’ usuwa puste akapity zdublowane klawisze enter
    With Selection.Find
        .Text = „”^p^p””
        .Replacement.Text = „”^p””
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *