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.