Samenvoegdocument word vullen vanuit access

Status
Niet open voor verdere reacties.

john64

Gebruiker
Lid geworden
12 jun 2011
Berichten
268
In mijn database wil ik een word document kunnen vullen voor een bepaalde persoon (met daarbij een aantal gegevens van die persoon).
Ik heb hiervoor al een word-document gemaakt, gelinkt aan de database. In dit word document staan diverse samenvoegvelden gedefinieerd.

Een aantal vragen hierbij:
- in de database heb ik op 2 plekken een bijlage veld staan waarin o.a. een grafische afbeelding staat (een logo). Deze wordt in de database zelf vertoond. Ik wil dit logo ook kunnen printen in het word-document. Als ik in de query die ik hiervoor gemaakt heb, het bijlage-veld opneem («LogoCI»), en ik neem dit veld op in mijn samenvoegdocument, dan worden alle andere gegevens wel correct samengevoegd, maar het logo wordt niet weergegeven.Ik heb al iets gelezen over "IncludePicture" , maar ik kom er niet echt uit.
- ik wil o.a. een overzicht certificaten van betrokkene in het document opnemen (1-op-veel relatie). Hoe kan ik dit realiseren ?
- hoe kan ik vanuit access de gegevens van alleen die ene geselecteerde persoon "naar word sturen"?

Dit alles wil ik d.m.v. VBA realiseren.

Misschien iemand een idee om mij op weg te helpen ?

mvg
John
 
Niet persoonlijk bedoeld, maar wanneer houden mensen eens op met het bijlageveld te gebruiken? :D. Je kunt dat niet gebruiken in een samenvoeging, omdat er geen data wordt overgehaald. Samenvoegen met een query laat alleen 'normale' velden zien en het bijlageveld hoort daar nu eenmaal niet bij. Logo's en afbeeldingen kun je veel beter buiten de db opslaan in een aparte map onder de databasemap, en met tekstlinks verwijzen naar de plaatjes. Diezelfde truc gebruik je dan ook in het IncludePicture veld in Word.
Vraag 2: Waarom niet een Access rapport? Heb je alles in notime gemaakt. Word kan alleen samenvoegen met één record tegelijk, tenzij je een nogal ingewikkelde constructie gaat maken. In dit draadje wordt de techniek een beetje uitgelegd, en heeft de TS ook een voorbeeldje geplaatst.
Vraag 3: kwestie van de juiste query gebruiken om de samenvoeging te maken. Als je daarin één persoon hebt staan, gaat je samenvoeging automatisch ook goed.
 
Hoi Michel,

Dank voor snelle reactie. Ik was al bang voor je reactie over de bijlage :(. Ik heb al veel bijlagen-velden uit de database "gesloopt", op de 2 genoemde plaatsen waar een logo en een ingescande handtekening staat na.
Documenten sla ik op in een automatische gegeneerde map met naam "Naam (werknemerID)", waarin allerlei submappen staan (waaronder een map "Documentatie") die ook gecreëerd worden. Deze map is te openen door druk op een knop, waardoor verkenner wordt gestart.

Voor het maken van een certificaat gebruik ik ook een logo
Daar heb ik het opgelost met:
Code:
    Set objWord = GetObject(, "Word.Application")

    objWord.ActiveDocument.Bookmarks("bwLogoCI").Select
    If Me.blnPrintLogoCI And Not IsNull(Me.LogoCI.FileName) And Me.LogoCI.FileName <> "" Then
        objWord.Selection.InlineShapes.AddPicture (CurrentProject.Path & "\" & gstrCI & "\" & Me.LogoCI.FileName)
    Else
        objWord.Selection.TypeText " "
    End If

Op de locatie waar in het wordtemplate een bladwijzer staat, wordt als het logo beschikbaar is, een logo geprint.

Heb je een voorbeeld hoe je een afbeelding in je database kunt laten zien op een formulier, en eventueel kunt printen in een rapport en/of word-document bij gebruik van tekstlinks (ik wil dus wel het logo op mijn formulier te zien krijgen)

Je opmerking in het gelinkte draadje: "Kan allemaal prima in Access. Je kunt zelfs een Word document in je Access rapport plaatsen als je grote lappen tekst nodig hebt. Je gebruikt de tabeldata dan voor je detailsectie" is me niet duidelijk.
Het template in word dat ik probeer te gebruiken vervangt diverse samenvoegvelden door het juiste veld uit de query. Hoe kan ik dat realiseren in een grote lap tekst, waar op verschillende plaatsen een gegeven uit de database geplaatst moet worden?

mvg
John
 
Ik doe het meestal zo:
Code:
            fNameKaart = Me("KaartPad" & i)
            If (res = True) Then
                fNameKaart = Path & "\" & fNameKaart
            End If
            On Error GoTo Foutje
            Me("picKaart" & i).Picture = fNameKaart
            Me("picKaart" & i).Visible = True

Dit is maar een klein deel van mijn code; ik vul met een lusje 12 Image controls vandaar de Me("KaartPad" & i) en Me("picKaart" & i) constructie.
 
Met die code ga ik vanavond even stoeien

Hoe kun je een word-doc in access rapport plaatsen ?

mvg
John
 
Michel (en anderen),

Na een paar dagen stoeien en op helpmij forum zoeken kom ik er nog niet uit.
In een oudere post (http://www.helpmij.nl/forum/showthr...rlink-(afbeelding)-weergeven-bij-samenvoegen) wordt de volgende oplossing en code gegeven

Eerst een afbeelding invoegen vanuit <Invoegen>, <Snelonderdelen>, <Veld>, categorie <Koppelingen/Verwijzingen>, veld <IncludePicture>. Daar typ je dummytekst, of een verwijzing naar een echt plaatje. Het laatste werkt iets beter, omdat je dan gelijk een afbeelding ziet. Met <Alt>+<F9> veldcodes switchen, en dan krijg je iets als

Code:
{  INCLUDEPICTURE  "C:\Temp\Test\CabineD300.jpg"  \* MERGEFORMAT }

Vervolgens de letterlijke padverwijzing vervangen door je samenvoegveld.
Code:
{  INCLUDEPICTURE  "{ MERGEFIELD "Cabine" }"  \* MERGEFORMAT }

Stappen uitgevoerd:
  • in access tabel gemaakt met juiste gegevens, inclusief een veld met juiste verwijzing naar een afbeelding
  • word document gemaakt: stapsgewijze wizard Afdruk samenvoegen
  • bij stap 3 Adressen selecteren, de access database en daarbinnen de juiste tabel geselecteerd
  • Vervolgens: Invoegen - Snelonderdelen - Veld - IncludePicture - bestandsnaam c:\logo.jpg - { INCLUDEPICTURE "c:\\logo.jpg" \* MERGEFORMAT } verschijnt
  • c:\\logo.jpg geselecteerd en dan Samenvoegvelden invoegen - gekozen voor veld met verwijzing naar afbeelding - { INCLUDEPICTURE "{ MERGEFIELD PadLogo }" \* MERGEFORMAT } verschijnt
Op moment dat ik voorbeeld van resultaat laat zien, dan komt er keurig de juiste afbeelding te voorschijn.
Als ik in de database een padnaam invul voor een andere afbeelding, dan blijft bij openen van het samenvoegdocument de eerste afbeelding zichtbaar, dus niet de afbeelding waarheen ik dat moment naar verwijs.

Voor test heb ik naast de includepicture regel ook een «PadLogo» toegevoegd om te kijken wat de waarde is. Deze laatste code geeft de juiste bestandslocatie weer (weliswaar met enkele backslashes, op sommige sites wordt gemeld dat dit dubbele backslashes zouden moeten zijn)

Hoe kan ik werken met "variabele afbeeldingen" in mijn samenvoegdocument ? De tekstwaarde met de naam van het pad is wel gewijzigd, de afbeelding helaas niet, deze blijft de eerste afbeelding weergeven

mvg
John
 
Iemand nog een idee hoe je "variabele" afbeeldingen kunt genereren bij samenvoegen van een word document (vanuit access)

mvg
John
 
De backslashes heb je wel degelijk nodig, dus daar zit 't probleem niet. Ik ben er zelf achter gekomen dat de samenvoeging fout gaat (met als resultaat ofwel een foutmelding, ofwel een herhaling van de vorige afbeelding) als er spaties in de bestandsnaam zitten. Het gaat perfect als je geen spaties in de naam hebt.
 
Hoi Michel,

Zie dat je net ook op mijn vraag in het Word forum gereageerd had, dank.
Op https://support.office.com/nl-nl/ar...d62-9aac-794279d02de9?ui=nl-NL&rs=nl-NL&ad=NL staat ook een uitleg, dat wanneer een bestandsnaam spaties gebruikt (of het pad naar de betrokken bestand spaties bevat), dat je dan aanhalingstekens moet gebruiken.

Syntaxis

Wanneer u de IncludePicture-veldcode weergeeft in het document, ziet de syntaxis er als volgt uit:

{ INCLUDEPICTURE "Bestandsnaam" [Schakelopties ] }

Opmerking Met een veldcode wordt aangegeven wat in het veld moet worden weergegeven. Veldresultaten worden in het document weergegeven nadat de veldcode is geëvalueerd. Druk op Alt+F9 om te schakelen tussen het weergeven van de veldcode en de veldcoderesultaten.


Instructies


"Bestandsnaam"

De naam en de locatie van het afbeeldingsbestand. Als de locatie een lange bestandsnaam met spaties bevat, plaatst u de naam tussen aanhalingstekens. Vervang enkelvoudige backslashes door dubbele backslashes om het pad op te geven, bijvoorbeeld:

"C:\\Handleiding\\Art\\Art 22.gif"

Dit werkt prima als je een standaardbestand wilt invoegen, maar hoe doe je dat als het betrokken bestand uit de query uit een access bestand moet komen, en dus variabel is. Kun je dan iets met de ASCII code 34 (chr$(34) ? Dit is de waarde voor aanhalingsteken. Ik heb het geprobeerd met een aanhalingsteken rond de mergefield optie, maar ik denk dat hier iets fout gaat.

mvg
John
 
Ik denk dat het onmogelijk is. Het is mij ook niet gelukt. Het probleem is: Word kan de VBA codes nooit verwerken dus ofwel je hebt een vaste string met spaties, ofwel je hebt een variabele zonder spaties. Je kunt nooit checken op spaties in het samenvoegveld, althans niet op het moment dat je de samenvoeging uitvoert. Daarna natuurlijk wel, maar dan moet je weer een macro in Word gebruiken die controleert of in het INCLUDEPICTURE veld spaties voorkomen. En dan alsnog extra quootjes toevoegt. Mij lijkt voorkomen een stuk makkelijker en geen afbeeldingen gebruiken met spaties in de naam...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan