[VBA/Word+Access] Pagina toevoegen aan document

Pagina: 1
Acties:
  • 130 views sinds 30-01-2008
  • Reageer

  • Intrepidity
  • Registratie: December 2003
  • Laatst online: 24-06-2024
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:

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 :P

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 26-07 15:57

mulder

ik spuug op het trottoir

Je zou bv een documentje gewoon kunnen aflsuiten als je er mee klaar bent. Of gewoon een mailing maken

oogjes open, snaveltjes dicht


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Moeilijk doen waar het makkelijk kan? Zeker als je zelf zegt dat je geen VBA held bent snap ik je aanpak niet. Gewoon afdruk samenvoegen in Word zelf en officetopics in officesuites en software openen. ;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:50

Creepy

Tactical Espionage Splatterer

En meten een move naar OFF erachteraan :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney