VBA – Izveštaji u Word-u iz Access-a

Iako MS Access poseduje odličan, vrlo podešljiv, generator izveštaja, ponekad će vam zatrebati još složenije formatiranje izveštaja. U ovim slučajevima u pomoć ćemo pozvati MS Word, koji je moguće pozvati iz VBA programskog koda Access-a. Prikazaćemo vam kako da u Word-u formatirate neki izveštaj na osnovu podataka koje će isporučiti Access. Na ovom primeru možemo videti koliko su Office aplikacije međusobno integrisane.

Recimo da imamo bazu podataka u Access-u, koja se zove „Biblioteka“ i u kojoj se vodi evidencija o knjigama; i da imamo tabelu sa podacima o svakoj knjizi u biblioteci (tabela „Knjige“), sa poljima: „Naziv“, „Autor“, „Izdavac“. Sada ćemo na glavnu formu, gde se ažuriraju podaci o knjigama, smestiti jedno komandno dugme (command_button), u čiji događaj „Click“ ćemo smestiti sledeći programski kod:


Dim n As Integer
Dim baza As Database
Dim rset As Recordset
Dim wd As Word.Document

Set baza = CurrentDb
Set rset = baza.OpenRecordset(„Knjige“)
rset.MoveFirst
n= 0
Set wd = CreateObject(„Word.Document“)

While Not rset.EOF
n= n + 1
wd.Paragraphs.Add
wd.Paragraphs(n).Range =str(n) + „.“
+ rset![Naziv] + “ “ + rset![Autor]
rset.MoveNext
Wend

wd.SaveAs FileName:=“izvestaj.htm“
wd.Close

Prvo što radimo je da definišemo varijable, a to su „n“ kao brojač, „baza“ i „rset“ kao delovi kolekcije DAO, i na kraju „wd“ kao OLE objekat (Word-ov dokument). Da bi koristili ove objekte, proverite u tabeli „Tools> References“ da li su potvrđene opcije: „Microsoft DAO“ i „Microsoft Word 9.0 Object Library“. Kada smo ovo sve definisali otvaramo tabelu „Knjige“ iz baze „Biblioteka“, i postavljamo pokazivač na prvi slog (rset.MoveFirst). Potom varijabli n dodeljijemo vrednost nula i inicijalizujemo Word objekt, u vidu novog Word dokumenta. Zatim imamo While-Wend petlju koja nam omogućava da prođemo kroz sve slogove tabele (sve do kraja tabele – EOF). U samoj petlji metodom „Add“ dodajemo novi pasus u Word dokument i u taj pasus smeštamo sadržaj polja „Range“. Sadržaj čine ime, naziv knjige i ime autora knjige. Kada smo ovo upisali u pasus, prebacujemo se na sledeći slog u tabeli (rset.MoveNext) i idemo ponovo iz početka, sve do kraja tabele. Na kraju nam ostaje da snimimo fajl pod nekim imenom i zatvorimo dokument.

Pratite Krstaricu na www.krstarica.com