Opgenomen macro automatisch starten bij openen Word samenvoegdocument

Status
Niet open voor verdere reacties.

J Manussen

Gebruiker
Lid geworden
16 dec 2009
Berichten
30
Goedemiddag,

Bij het openen van een Word samenvoegdocument, aangeroepen vanuit Access, wil ik automatisch een in dat samenvoegdocument eerder opgenomen macro ("Macro_afdrukken") automatisch laten uitvoeren.

Het filter dat in de macro is opgenomen luidt in SQL: SELECT * FROM "Qry_reserveringen" WHERE 'print' = 'p'

Ik heb in Access de volgende VBA code staan voor de overstap naar Word en het afsluiten van Access:

Code:
Private Sub cmdWordafdr_Click()

Dim accobj As AccessObject
Set wrdobj = CreateObject("Word.Application")    'Activeer het programma Word
wrdobj.Visible = True                                       'Toon de Word-applicatie
wrdobj.Documents.Open ("C:\...\...docm")          'Open het bestand
wrdobj.Activate                                             'Activeer Word met het geopende bestand
DoCmd.RunMacro ("Macro_afdrukken")
wrdobj.PrintOut
Set accobj = Nothing
DoCmd.RunMacro ("Macro_Access_afsluiten")
End Sub

Het openen van het samenvoegdocument werkt.
Het printen van de door mij gefilterde records (via SQL-instructie) echter niet.

Wat doe ik fout? en hoe los ik dit op?

Hulp bij dit probleem wordt zeer gewaardeerd.

Met vr. groet,
Joop Manussen
 
Laatst bewerkt door een moderator:
Joop,

Zo zonder programma is het heel lastig om een fout te zoeken vooral omdat het over meerdere programma's
gaat die ook nog eens samen moeten werken.
Even uit het blote hoofd dan maar een paar vragen:
- Krijg je foutmeldingen, zo ja welke?
- Ik vermoed dat je bij de regel DoCmd.RunMacro("Macro_afdrukken") een foutmelding krijgt dat hij de macro niet kan vinden.
Dit komt omdat de macro in Word staat en de DoCmd zal waarschijnlijk kijken in Access om de macro te vinden.
Je zou van de macro in Word een autostart macro kunnen maken die altijd start als het bestand wordt geopend.
- De query SELECT * FROM "Qry_reserveringen" WHERE 'print' = 'p' ziet er vreemd uit met de ' en " deze zal in ieder geval niet
werken zoals vermeld, waarschijnlijk moet je de " verwijderen.

Veel Succes.
 
Beste Elsendoorn 2134,

Ik ben er uit:

Heb eerst in het Word-samenvoegdocument een macro opgenomen. Deze macro laat ik via de instructie AutoOpen uitvoeren bij het openen van het document.
In de opgenomen macro heb ik het oorspronkelijke SQLStatement1 gewijzigd d.m.v. het door mij gewenste filter:
SQLStatement:="SELECT * FROM `blad2reservering`", SQLStatement1:="Where print = 'p'",_

En hij doet het!
Bedankt voor je reactie.
Joop Manussen

Zal de vraag op opgelost zetten

Hieronder de macro die wordt geactiveerd bij het openen van het Word-samenvoegdocument:

Sub AutoOpen()
'
' Macro_afdrukken Macro
'
'
ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:\Esplanade2\reserveringen.xlsm", ConfirmConversions:=False, ReadOnly:= _
False, LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:="", _
PasswordTemplate:="", WritePasswordDocument:="", WritePasswordTemplate:= _
"", Revert:=False, Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Esplanade2\reserveringen.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0" _
, SQLStatement:="SELECT * FROM `blad2reservering`", SQLStatement1:="Where print = 'p'", _
SubType:=wdMergeSubTypeAccess
ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
With ActiveDocument.MailMerge
.Destination = wdSendToPrinter
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
End Su
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan