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).
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.
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:
Pre zrušenie záložky a textu, na ktorý ukazuje, platia nasledujúce poučky:
- Vymazaním záložky nedôjde k zrušeniu oblasti
Range
, ktorú vymedzuje. - 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á.
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:
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.