IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

8. diel - Záložky a hypertextové odkazy vo VBA pre Word

V minulej lekcii, Hľadanie a nahradenie vo VBA pre Word , sme pomocou VBA vyhľadávali a nahradzovali prvky v dokumente Word.

V dnešnom tutoriále VBA pre Word budeme pokračovať v navigácii v textových dokumentoch. Naučíme sa spracovávať programy pre prácu so záložkami a hypertextovými odkazmi. Budeme teda pracovať s prvkami, ktoré sú potrebné na plnohodnotné spracovanie textov

Záložky vo VBA pre Word

Pomocou vyhľadávania sme v dokumente našli určité miesto, prvok. Je možné, že sa na toto miesto budeme chcieť vrátiť. Podobná situácia nastáva, ak potrebujeme niektoré miesto v dokumente spätne opravovať, modifikovať, alebo sa k nemu častejšie vracať. V takom prípade použijeme v tom určitom mieste záložku.

V texte použitej záložky sú objekty nesúce klasický anglický názov Bookmark. K jednotlivým záložkám si priraďujeme názov, podľa ktorého sa na ne odkazujeme a používame ich. Vlastnosť Bookmark nesie dokument, oblasť alebo výber. Tým sa odkazuje na objekt Bookmark. Viaže sa teda k objektom Document, Range alebo Selection. Kolekcia záložiek nesie označenie Bookmarks a má klasické metódy a vlastnosti kolekcií.

Práca so záložkou

Základná práca so záložkou je pridanie novej záložky do kolekcie záložiek metódou Add. Metóda má dva parametre:

  • Name - názov, pod ktorým bude volaná a nájdená v kolekcii,
  • Range - oblasť, na ktorú bude záložka ukazovať (označovať ju).
Uveďme si príklad:
varDoc.Bookmarks.Add Name:="Zal02", Range:=varDoc.Paragraphs(2).Range

Tu v príklade použijeme znalosť nájdenia prvku v dokumente z predchádzajúcej lekcie Hľadanie a nahradenie vo VBA pre Word. Nájdený prvok označíme ako záložku a máme k nemu priamy prístup:

Public Sub subZalozka04()
'vyhledané slovo označíme jako výběr a následně označíme jako záložku
Dim st As String
    ActiveDocument.Select
    st = "Odstavec6"
    Selection.Collapse
    Selection.Find.ClearFormatting
'vyhledání provedeme pomocí parametrů metody
    Selection.Find.Execute FindText:=st, MatchWholeWord:=True, MatchCase:=False   'ActiveDocument.Range.Find
'nastaví záložku na vyhledaný výběr, který použije jako oblast Range
    ActiveDocument.Bookmarks.Add Name:="zal6", Range:=Selection.Range
End Sub

Záložku pridávame ako člena kolekcie. Mažeme ju ale samostatne ako jeden určitý objekt metódou Delete:

ActiveDocument.Bookmarks("zalK").Delete

Ďalšia potrebná metóda záložky je Select. Oblasť Range, určená pri vytváraní záložky, je označená ako výber.

Významnými vlastnosťami záložky sú:

  • Start - prvý znak záložky vo zvolenom objekte,
  • End - posledný znak záložky vo zvolenom objekte,
  • Range - oblasť, ktorú záložka označuje.
Uvedené vlastnosti nám umožňujú začiatky a konce záložky porovnávať s inými objektmi, napr. s odsekmi. Tiež s nimi môžeme ďalej pracovať, teda oblasť záložky rozšíriť alebo zúžiť. V príklade porovnávame oblasť záložky s odsekom:
Public Sub subZaloza05()
'práce s počátečním a koncovým znakem oblasti záložky vzhledem k odstavci
    With ActiveDocument
'testujeme, zda oblast záložky začíná před koncem prvního odstavce
        If .Bookmarks("zalKazdy").Start >= .Paragraphs(1).Range.End Then
            .Paragraphs(1).Range.Select  'vybereme první odstavec
        Else
            .Bookmarks("zalKazdy").Range.Select  'vybereme oblast záložky
        End If
'v okně Immediate si vypíšeme pozici začátku záložky pro kontrolu
        Debug.Print .Bookmarks("zalKazdy").Start
    End With
End Sub

Na obrazovke je možné záložky zobraziť ako hranaté zátvorky. Na zobrazenie záložiek na obrazovke použijeme objekt ActiveWindow nasledujúcim spôsobom:

ActiveDocument.ActiveWindow.View.ShowBookmarks = True

V príklade vložíme dve záložky na druhý a piaty odsek textu. Vždy vyberieme celé odseky. Na konci procedúry necháme záložku označujúcu piaty odsek označiť ako výber a záložky zobrazíme:

Sub subZalozka11()
'přidání dvou záložek, kde záložka obsahuje vždy celý odstavec
    Dim varDoc As Document
    Set varDoc = ActiveDocument
'záložky na druhý a pátý odstavec
    varDoc.Bookmarks.Add Name:="Odst02", Range:=varDoc.Paragraphs(2).Range
    varDoc.Bookmarks.Add Name:="Odst05", Range:=varDoc.Paragraphs(5).Range
'druhou záložku vybereme
    varDoc.Bookmarks("Odst05").Select
'záložky zobrazíme v textu dokumentu
    varDoc.ActiveWindow.View.ShowBookmarks = True
End Sub

Na obrázku je vidieť výsledok predchádzajúcej procedúry v porovnaní s pôvodným stavom:

VBA pre Word

Pre zrušenie záložky a textu, na ktorý ukazuje, platia nasledujúce poučky:

  1. Vymazaním záložky nedôjde k zrušeniu oblasti Range, ktorú vymedzuje.
  2. Zmazaním celého textu, na ktorý ukazuje záložka, dôjde k zmazaniu záložky. Ak zmažeme iba časť textu, na ktorý ukazuje záložka, záložka zostane zachovaná.
Záložku je možné otestovať, či v texte existuje pomocou metódy Exist prislúchajúcej kolekcii Bookmarks. Povinným parametrom metódy je názov záložky. Príklad testu a zrušenie záložky je uvedený tu:
If ActiveDocument.Bookmarks.Exists("Zstart") = True Then
    ActiveDocument.Bookmarks("Zstart").Delete
End If

Hypertextový odkaz vo VBA pre Word

Iný spôsob orientácie v dokumente predstavuje hypertextový odkaz. Ten sa používa prednostne pre odkazy mimo aktuálneho dokumentu, napríklad na iný súbor alebo na miesto v internetovej sieti. Možno ho tiež použiť vo vnútri jedného dokumentu.

Hypertextový odkaz Hypelink pridáme metódou Add do kolekcie Hypelinks. Jediným povinným parametrom je Anchor. Do neho sa priradí informácia, kam bude odkaz umiestnený v texte. Najčastejšie sa jedná o vybrané slovo alebo text. Nevyhnutným parametrom je tiež Address, do ktorého priradíme adresu cieľa odkazu. Teda ide o súbor na disku alebo adresu v rámci internetovej siete. Keď chceme odkazovať v rámci rovnakého dokumentu, použijeme ešte parameter SubAddress. Ten udáva presné miesto v rámci aktuálneho dokumentu, ktoré sa zapíše do parametra Address:

Public Sub subHyper11()
'odkaz na část v aktuálním dokumentu, nutno použít parametr SubAddress
Dim varDoc
    Set varDoc = ActiveDocument
    varDoc.Hyperlinks.Add Anchor:=Selection.Range, Address:=varDoc, SubAddress:=varDoc.Paragraphs(3).Range
End Sub

Hypertextový odkaz na iný textový súbor na lokálnom disku vytvoríme pomocou úplnej adresy v rámci počítača:

ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="C:\db\aa.txt"

Odkaz na miesto v internetovej sieti bude obdobou predchádzajúceho príkladu s tým, že udáva plnú adresu cieľového miesta:

ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="https://www.itnetwork.cz/"

Pre orientáciu v použitých odkazoch si môžeme adresy a subadresy vypísať do pomocného okna v programovom prostredí:

Public Sub subHyper022()
'vypíše adresy a subadresy všech hyper. odkazů
Dim varH As Object
    For Each varH In ActiveDocument.Hyperlinks
        Debug.Print varH.Address, varH.SubAddress
    Next
End Sub

Výsledok výpisu pre predchádzajúce tu uvedené odkazy je na obrázku:

VBA pre Word

Pre prácu v prostredí VBA je dôležitá metóda Follow. Tá zobrazí cieľ odkazu, alebo nastaví príslušné miesto, pokiaľ ide o prácu vo vnútri jedného dokumentu. Metóda má niekoľko nepovinných parametrov, ktoré sú dobre nastavené a väčšinou nie je potrebné ich meniť. Príklad metódy Follow pre prácu v rámci dokumentu je:

Public Sub subHyper131()
'odkaz v aktuálním dokumentu a přímo volání místa, kam se odkazuje
Dim varHyper As Hyperlink
    With ActiveDocument
'!! při dosazení do proměnné jsou parametry v závorce !!
        Set varHyper = .Hyperlinks.Add(Anchor:=Selection.Range, Address:=ActiveDocument, SubAddress:=.Paragraphs(7).Range)
    End With
    varHyper.Follow  'kurzor se nastaví na počátek sedmého odstavce
End Sub

Odstránenie hypertextového odkazu sa vykoná metódou Delete na konkrétnom odkaze:

ActiveDocument.Hyperlinks(1).Delete

V budúcej lekcii, Komentáre a register vo VBA pre Word , sa naučíme programom VBA ovládať komentáre a register.


 

Predchádzajúci článok
Hľadanie a nahradenie vo VBA pre Word
Všetky články v sekcii
VBA pre Word
Preskočiť článok
(neodporúčame)
Komentáre a register vo VBA pre Word
Článok pre vás napísal Luboš Marvan
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Snahou autora je žít podle svého
Aktivity