Binnenkort moet ik naar een redelijk groot aantal mensen tegelijk een brief sturen. Aangezien ik geen zin heb om ongeveer 150 adressen handmatig te schrijven/typen en ik al een bestaande adressenlijst in MS Access heb wil ik proberen met VBA een word-document te genereren met alle enveloppen.
Ik heb hiervoor een sjabloon (.dot) gemaakt met 5 bladwijzers, te weten naam, straatnaam, huisnummer, postcode en woonplaats.
Het gaat prima om met een resultset één word-document te maken met de gegevens van een bepaald record, maar dan..
Normaal zou ik Documents.Add gebruiken om een nieuw document te maken, maar met 150 adressen denk ik niet dat mijn computer dat leuk gaat vinden (150 instanties van word open)
Mijn vraag is dus; hoe kan ik, in VBA, een pagina (op basis van een .dot sjabloon) toevoegen aan een openstaand document?
Een volgende vraag die me hierbij in het hoofd schiet is, hoe zit het dan met de bladwijzers in het document? ik kan me zo voorstellen dat word een beetje op z'n bek gaat als er 150 bladwijzers met dezelfde naam zijn en ik probeer een van deze te replacen met tekst..
Voor de zekerheid hieronder de code van de sub:
Excuses indien ranzige code, ik ben niet zo'n VB(A) held
Ik heb hiervoor een sjabloon (.dot) gemaakt met 5 bladwijzers, te weten naam, straatnaam, huisnummer, postcode en woonplaats.
Het gaat prima om met een resultset één word-document te maken met de gegevens van een bepaald record, maar dan..
Normaal zou ik Documents.Add gebruiken om een nieuw document te maken, maar met 150 adressen denk ik niet dat mijn computer dat leuk gaat vinden (150 instanties van word open)
Mijn vraag is dus; hoe kan ik, in VBA, een pagina (op basis van een .dot sjabloon) toevoegen aan een openstaand document?
Een volgende vraag die me hierbij in het hoofd schiet is, hoe zit het dan met de bladwijzers in het document? ik kan me zo voorstellen dat word een beetje op z'n bek gaat als er 150 bladwijzers met dezelfde naam zijn en ik probeer een van deze te replacen met tekst..
Voor de zekerheid hieronder de code van de sub:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| Private Sub btnGenereer_Click()
On Error GoTo Err_btnGenereer_Click
Dim rstAdressen As New ADODB.Recordset
rstAdressen.Open "qryAdressen", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If rstAdressen.RecordCount = 0 Then
DisplayMessage "Er zijn geen adressen om af te drukken."
Exit Sub
End If
Dim appWord As New Word.Application
With appWord
.Documents.Add "c:\envelop.dot"
.ActiveDocument.ShowSpellingErrors = False
.Visible = True
End With
Do Until rstAdressen.EOF
With appWord
.Selection.GoTo wdGoToBookmark, Name:="naam"
.Selection.TypeText rstAdressen!naam & " "
.Selection.GoTo wdGoToBookmark, Name:="straatnaam"
.Selection.TypeText rstAdressen!straat & " "
.Selection.GoTo wdGoToBookmark, Name:="huisnummer"
.Selection.TypeText rstAdressen!huisnummer & " "
.Selection.GoTo wdGoToBookmark, Name:="postcode"
.Selection.TypeText rstAdressen!postcode & " "
.Selection.GoTo wdGoToBookmark, Name:="woonplaats"
.Selection.TypeText rstAdressen!woonplaats & " "
.Documents.Add "c:\envelop.dot"
End With
rstAdressen.MoveNext
Loop
Dim intPages As Integer, strMessage As String
intPages = appWord.Selection.Information(wdNumberOfPagesInDocument)
strMessage = "De enveloppen zijn gemaakt. Een totaal van " & CStr(intPages) & " pagina's is gemaakt. Nu afdrukken?"
If Confirm(strMessage) Then
appWord.ActiveDocument.PrintOut
End If
Exit_btnGenereer_Click:
Exit Sub
Err_btnGenereer_Click:
MsgBox Err.Description
Resume Exit_btnGenereer_Click
End Sub |
Excuses indien ranzige code, ik ben niet zo'n VB(A) held