Crearea unei funcții pentru Word

Procedura de mai jos elimină unele tipuri speciale de formatare (hyperlinkuri, marcaje și câmpuri), dar păstrează textul în acele zone speciale.

CREAREA DE BIBLIOTECI DE FUNCȚII PERSONALIZATE

Unor programatori le place să păstreze funcțiile pe care le scriu (care nu sunt specifice aplicației) în module separate din Editorul VBA. Aceste mici biblioteci stochează propriile colecții de proceduri testate, utile, generice. Trebuie calculat impozitul pe vânzări? Nu se reinventează roata. Trebuie doar importată biblioteca de funcții matematice, printre care se află și această procedură. Modulele pot fi exportate ca fișiere cu extensia .bas și apoi importate în orice aplicație care are nevoie de funcții. Se alege File> Export File (sau Ctrl + E). De exemplu, se pot menține module separate care conțin ecuații matematice, funcții de manipulare a șirurilor și alte funcții personalizate care funcționează în orice gazdă VBA. Un fișier .bas este doar un fișier text obișnuit care conține codul sursă al modulului (subrutinele și funcțiile sale). Poate fi citit/scris cu Notepad, dar se poate utiliza și funcția File Import pentru a-l adăuga la un proiect VBA. Când este importat, acesta va apărea în Exploratorul de proiect (Project Explorer) ca un modul nou.

Funcția de mai jos este pentru Word și – neobișnuit pentru o funcție – nu returnează informații (returnează valoarea null). Scopul principal al funcției este de a realiza doar câteva operațiuni în documentul specificat, deci nu este nevoie să returneze date la apelant.

O funcție care returnează valoarea null

1. Option Explicit
2.
3. Function Eliminare_Campuri_Hyperlink_Bookmark()
4.  Dim Link As Hyperlink
5.  Dim SemnCarte As Bookmark
6.  Dim Camp As Field
7.    With ActiveDocument
8.        For Each Link In .Hyperlinks
9.          Link.Delete
10.       Next Link
11.       For Each SemnCarte In .Bookmarks
12.         SemnCarte.Delete
13.       Next SemnCarte
14.       For Each Camp In .Fields
15.         Camp.Unlink
16.       Next Camp
17.    End With
18. End Function
19.
20. Sub Curatare_Document()
21.  Call Eliminare_Campuri_Hyperlink_Bookmark
22.  'aici pot fi adaugate alte functii de curatare a documentului
23. End Sub

Iată cum funcționează codul:

  • Linia 1 conține comanda Option Explicit pentru modul pentru a forța declararea explicită a tuturor variabilelor. Linia 2 este goală.
  • Linia 3 începe funcția numită Eliminare_Campuri_Hyperlink_Bookmark, care va elimina toate elementele de tip hyperlink, bookmark și câmpurile (fields) din documentul activ. Funcția continuă până la comanda End Function de pe linia 18.
  • Linia 4 declară o variabilă numită Link de tip Hyperlink. Linia 5 declară o variabilă numită SemnCarte de tip Bookmark. Linia 6 declară o variabilă numită Camp de tip Field.
  • Linia 7 începe cu comanda With care funcționează cu obiectul ActiveDocument și durează până la comanda End With de pe linia 17. Comanda With conține trei bucle For Each...Next.
  • Prima buclă For Each...Next, de pe liniile 8-10, parcurge fiecare obiect Link din colecția Hyperlinks a documentului curent. Linia 9 folosește metoda Delete pentru a șterge fiecare legătură. Ștergerea unei legături (hyperlink) șterge doar acea legătură din document dar păstrează textul care a fost afișat pentru hyperlink.
  • A doua buclă For Each...Next, de pe liniile 11-13, parcurge fiecare obiect SemnCarte din colecția Bookmarks. Linia 12 folosește metoda Delete pentru a șterge fiecare semn de carte - bookmark. Ștergerea unui bookmark elimină doar marcajul din document dar păstrează textul sau obiectul pe care îl conține acel bookmark.
  • A treia buclă For Each...Next, de pe liniile 14-16, caută fiecare obiect Camp din colecția Fields. Linia 15 folosește metoda Unlink pentru a elimina câmpul. Metoda Unlink păstrează conținutul câmpului din document – ca text sau obiect și elimină doar legătura câmpului.
  • Linia 17 conține instrucțiunea End With care încheie comanda With, iar linia 18 conține instrucțiunea End Function care încheie funcția. Linia 19 este goală.
  • Liniile 20-23 conțin o subprocedură scurtă care apelează funcția Eliminare_Campuri_Hyperlink_Bookmark. Linia 22 conține un comentariu care spune că subprocedura poate apela și alte funcții de curățare, dar codul de apelarea altor funcții nu a fost scris încă. Este doar o notă.