Word document koppelen in access met variabelen overdracht

Status
Niet open voor verdere reacties.

ToineAHA

Gebruiker
Lid geworden
20 okt 2008
Berichten
12
Hallo beste helpers,

Op verschillende plaatsen heb ik voorbeelden gezien hoe vanuit access een worddocument te openen.
Ik wil echter iets meer, namelijk het volgende:
-vanuit een accessformulier een worddocument openen en koppelen aan access (tabel met OLE-veld)
-een waarde vanuit access (bv recordnummer) als eerste tekst in het document opnemen
-een bestandsnaam aan het document geven welke afhankelijk is van een waarde in het accessformulier en meteen een save aktie uitvoeren.
-als het document met die bestandsnaam al bestaat, alleen het document openen.

Bij voorbaat dank voor alle ideeen,

Toine.
 
Maak een samenvoegdocument in Word en koppel dat aan de database. Voeg een samenvoegveld in. Sla dit bestand op.
roep het vanuit access op met

Code:
With getobject("C:\samenvoegvoorbeeld.doc")
  .saveas "......"
  .close
End with
 
Maak een samenvoegdocument in Word en koppel dat aan de database. Voeg een samenvoegveld in. Sla dit bestand op.
roep het vanuit access op met

Code:
With getobject("C:\samenvoegvoorbeeld.doc")
  .saveas "......"
  .close
End with

Dank je voor de snelle reactie SNB.
Het document ophalen en opslaan lukt, alleen data uit het access formulier in het worddocument plaatsen lukt nog niet.

Gr. Toine.
 
Maak van het Word document een afdruksamenvoegendocument.
Zet daar dan invoegvelden (mergefields) in : menubalk/invoegen/veld../afdruk samenvoegen/mergefield
 
Maak van het Word document een afdruksamenvoegendocument.
Zet daar dan invoegvelden (mergefields) in : menubalk/invoegen/veld../afdruk samenvoegen/mergefield

Hallo SNB,

Het stukje menubalk/invoegen/veld is gelukt, ik heb nu een word document met een samenvoegveld met de naam recordnummer.
Echter dat samenvoegen begrijp ik niet.
Het leek mij het makkelijkste (omdat bij elk access record een ander word document gemaakt moet kunnen worden) een statement in access te gebruiken dat een waarde in het veld in het word document zet.

Dank voor je inzet, Toine.
 
Lees dan maar eerst eens een uitleg over afdruk samenvoegen in een boek over Word, de help in Word of een website met basiscursussen Word.
In Access moet je juist niets doen.
Door koppeling vna het Word-docuemnt met jouw tabel in Access komen alle accessgegevesn in het Wordbestand te staan. Maar wlke gegevesn, waar en met welke opmaak moet je in het worddocument vastleggen (met mergefields). Als je in Word vervolgens op de knop smaenmvoegen drukt worden er in Word net zoveel documenten gemaakt als jouw Accesstabel records heeft.

Vanuit Access dien je je dus te beperken tot 3 regels code:
1 open het Word-samenvoegbestand
2. voeg het semenvoegbestand per record samen met de Accestabel
3. sla het geproduceerde bestand op

Code:
Sub samenvoeg()
  With getobject("C:\samenvoeg.doc")
    .mailmerge.execute
    with .application
      .activedocument.saveas "C:\samenvoegresultaat.doc"
      .activedocument.close 0
    end with
    .close 0
  End with
End Sub
 
Lees dan maar eerst eens een uitleg over afdruk samenvoegen in een boek over Word, de help in Word of een website met basiscursussen Word.
In Access moet je juist niets doen.
Door koppeling vna het Word-docuemnt met jouw tabel in Access komen alle accessgegevesn in het Wordbestand te staan. Maar wlke gegevesn, waar en met welke opmaak moet je in het worddocument vastleggen (met mergefields). Als je in Word vervolgens op de knop smaenmvoegen drukt worden er in Word net zoveel documenten gemaakt als jouw Accesstabel records heeft.

Vanuit Access dien je je dus te beperken tot 3 regels code:
1 open het Word-samenvoegbestand
2. voeg het semenvoegbestand per record samen met de Accestabel
3. sla het geproduceerde bestand op

Code:
Sub samenvoeg()
  With getobject("C:\samenvoeg.doc")
    .mailmerge.execute
    with .application
      .activedocument.saveas "C:\samenvoegresultaat.doc"
      .activedocument.close 0
    end with
    .close 0
  End with
End Sub


Hallo SNB,

Ik zal zeker nog even in word gaan spitten om die methode te leren, echter lijkt het mij in dit geval niet de ideale oplossing.
De beheerder of gebruiker van de database (de een vult deze en de ander raadpleegt deze) zal de meeste akties uitvoeren binnen de database, alleen als de beheerder dat wenst zal hij bij een record (een taak) extra informatie toevoegen over hoe bepaalde wekzaamheden uitgevoerd moeten worden. Alleen dan zal er een word document gekoppeld moeten worden aan de database. Dus niet bij alle records.
Ik zoek dus iets als dit:
Dim prps As Object
With prps
.Item("RecordNummer").Value = RecNr.
end with
ik dacht dit ook met Getobject te kunnen maar dat lukt dus niet.
Is er overigens een bekende reden waarom access soms wel en soms niet automatisch lijstje mogelijkheden geeft bij een statement na de punt?

Gr. Toine.
 
Laatst bewerkt:
Uiteindelijk zelf de oplossing gevonden in volgende voorbeeld:

VBA Code Sample #2  Writing an Access Contact to a Word Letter
Helen Feddema (hfeddema@hvc.rr.com)

Procedure werkt nu perfect, klik op een knop in het access formulier, worddocument word geopend of aangemaakt en data uit access wordt in de merge fields van word geplaatst.

Bij sluiten van word ben ik dan meteen weer terug in het te bewerken record van access.
Zo kan er dus bij het ene record wel een worddocument gekoppeld worden terwijl dat bij een volgende record achterwege gelaten kan worden
 
Uiteindelijk zelf de oplossing gevonden in volgende voorbeeld:

VBA Code Sample #2  Writing an Access Contact to a Word Letter
Helen Feddema (hfeddema@hvc.rr.com)

Procedure werkt nu perfect, klik op een knop in het access formulier, worddocument word geopend of aangemaakt en data uit access wordt in de merge fields van word geplaatst.

Bij sluiten van word ben ik dan meteen weer terug in het te bewerken record van access.
Zo kan er dus bij het ene record wel een worddocument gekoppeld worden terwijl dat bij een volgende record achterwege gelaten kan worden



Kun je vertellen hoe je deze code hebt gebruikt in jouw database? Bij mij loopt hij vast op de eerste regel "appWord As Word.Application" Wat moet ik in Word aanpassen?
 
Laatst bewerkt:
Hallo Again,

Heb je de verwijzing naar word aangevinkt?
In vba onder extra > verwijzingen vinkje zetten bij > microsoft word xx.x object library <, verder staat bij mij ook > ole automation < en > microsoft scripting runtime < aangevinkt.
Deze laatste heb je nodig voor o.a. > Dim fso As New Scripting.FileSystemObject <.

Success Toine.
 
Hallo Again,

Heb je de verwijzing naar word aangevinkt?
In vba onder extra > verwijzingen vinkje zetten bij > microsoft word xx.x object library <, verder staat bij mij ook > ole automation < en > microsoft scripting runtime < aangevinkt.
Deze laatste heb je nodig voor o.a. > Dim fso As New Scripting.FileSystemObject <.

Success Toine.

Thx voor je reply. Baal inmiddels enorm want ik zit er volgens mij dichtbij, maar net niet. Ben dus erg blij met je hulp want ben weer iets verder. De vinkjes stonden idd niet aan. Nu krijg ik een foute code error 5 "ongeldig procedure aanroep of ongeldig argument"
Maar ik heb de dot file alleen in de juiste map gezet. Wat moet ik hiermee doen? Hoe krijg ik de tekst op de juiste plaats? Hij opent wel een lege dot file weke ik heb aangemaakt, maar de tekst erin lukt niet

Het lukt me om op het formulier een knop te maken in VBA. De knop werkt inmiddels goed met de codec. Word start en opent de *.dot file. Inmiddels ik het ook gelukt om een tekst veld in te voegen via Word > Invoegen > veld. Met {Docproperty}. Het lukt me alleen niet om deze op deze manier zelf in te voegen. Ik heb nu de bestaande codec handmatig gewijzigd en de naam gelijk gemaakt aan de codec in VBA. Hoe werkt de functie veld? Ik heb vrij veel velden in het Access formulier staan (stuk op 40). Deze zou ik graag allemaal willen koppelen aan Word. Kan dit met de functie veld? Of is er een handigere manier? :roll

Update:
Via Docproperty lukt het me nu om velden in te vullen. Maar een aantal velden zijn keuzemenu's met invoervak. Hier pak Word echter alleen het nummer (van autonummering in de tabel) ipv de weergegeven tekst.... Kan ik dit wijzigen?
Laatst gewijzigd door Checkagain;
 
Laatst bewerkt:
Hoi Again,

Je komt nu op voor mij ook onbekend terrein, ik heb het word document DocProps.dot van feddema gebruikt en een beetje aangepast.
Je zou het eerst kunnen proberen zonder wijzigingen en gewoon de veldnamen gebruiken die feddema gebruikt heeft:

With prps
.Item("TodayDate").Value = strDate
.Item("Name").Value = Nz(Me![txtFirstName] & " " & Me![txtLastName])
.Item("Address").Value = Nz(Me![txtAddress])
.Item("Salutation").Value = Nz(Me![txtSalutation])
.Item("CompanyName").Value = Nz(Me![txtCompanyName])
.Item("City").Value = Nz(Me![txtCity])
.Item("StateProv").Value = Nz(Me![txtStateOrProvince])
.Item("PostalCode").Value = Nz(Me![txtPostalCode])
.Item("JobTitle").Value = Nz(Me![txtTitle])
End With

Als dit werkt kun je docprops.dot aanpassen naar jouw wensen, hier weet ik niets van, ik heb alleen een paar velden van naam veranderd en de overige verwijderd.
Document open via menu bestand openen (opent dan als .dot), in menu extra>opties tabblad weergave vinkje bij veldcodes.

Verder ook bij menu bestand>eigenschappen>aangepast hier ook de veldnamen aangepast.

Succes Toine.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan