Sličan (isti?) problem sam rješavao i ja prije dosta vremene, tako da spominjem čega se sjećam.
- Našao sam par načina i uglavnom svi se svode na rad sa predlošcima (template). Ja sam na kraju završio posao sa "Bookmarks"-ima gledajući i modifikujuć primjer koji sam našao kod Helen Feddema.
- Mislim da predložak treba da ima ekstenziju .dotm ako je file format od ms 2007-2010 (makroi omogućeni).
- U template postaviš bookmarkse i daš im nazive te snimiš template.
- U accessu otvaraš taj template i preko imena bookmarksa ga popunjavaš sa vrijednostima i snimiš u datoteku pod nekim imenom.
NAPOMENA: u ovakvom slučaju za svaki 'record' dobiješ jednu datoteku što je meni i odgovaralo pa nisam nešto puno ni tražio dalje.
Mislim da je to išlo nekako ovako:
NAPOMENA2: u referencama za kod mora se uključiti "Microsoft Word XX Object Library" i "OLE Automation". Predložak traži u direktoriju gdje je i datoteka baze, a tu smješta i izvještaj.
Code:
On Error GoTo ErrorHandler
Dim strWordTemplate As String
Dim strDocsPath As String
Dim strSaveName As String
strWordTemplate = "NazivPredloska.dot"
Set pappWord = GetObject(, "Word.Application")
strDocsPath = CurrentProject.Path & "\"
strWordTemplate = strDocsPath & strWordTemplate
strTestFile = Nz(Dir(strWordTemplate))
Debug.Print "Provjera datoteke: " & strTestFile
If strTestFile = "" Then
MsgBox strWordTemplate & " predložak nije pronađen; ne mogu uraditi izvoz"
GoTo ErrorHandlerExit
End If
pappWord.Documents.Add strWordTemplate
With pappWord.Selection
.GoTo What:=wdGoToBookmark, Name:="NazivBookmarka1"
.TypeText Text:=Nz("Vrijednost1", "")
.GoTo What:=wdGoToBookmark, Name:="NazivBookmarka2"
.TypeText Text:=Nz("Vrijednos2", "")
'....
'....
End With
On Error GoTo ErrorHandler
strSaveName = "NazivIzvještaj.doc"
strSaveName = strDocsPath & strSaveName
With pappWord
.Selection.WholeStory
.Selection.Fields.Update
.Selection.HomeKey Unit:=wdStory
.ActiveDocument.SaveAs strSaveName
End With
With pappWord
.ActiveWindow.WindowState = 0
.Quit
End With
ErrorHandlerExit:
Set pappWord = Nothing
Exit Sub
ErrorHandler:
'Word nije pokrenut; otvori Word sa CreateObject
If Err.Number = 429 Then
Set pappWord = CreateObject("Word.Application")
Resume Next
Else
MsgBox "Greška broj: " & Err.Number & "; Opis greške: " & Err.Description
Resume ErrorHandlerExit
End If
Izmjenjeno tako da kod radi samo sa copy-paste. Za probu se može napraviti forma samo sa jednim dugmetom na čijem događaju 'OnClick' se ubaci gornji kod. U dodatku poruci je spomenuti predložak kao primjer. PS - pročitati NAPOMENU2.
[Ovu poruku je menjao oJee dana 08.02.2012. u 15:29 GMT+1]
[Ovu poruku je menjao oJee dana 08.02.2012. u 15:32 GMT+1]
[Ovu poruku je menjao oJee dana 09.02.2012. u 07:54 GMT+1]