Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fusion WORD avec une requête ACCESS depuis VBA ACCESS

7 réponses
Avatar
Aev
Bonjour =E0 tous,

J'ai d=E9velopp=E9 une base de donn=E9e spous ACCESS, et j'utilise des
requ=EAtes pour le publipostage sous WORD.
Lorsque je lance le fichier WORD depuis l'explorateur, une fen=EAtre
s'affiche me demandant l'autorisation d'ex=E9cuter la commande SQL - que
je valide - et la fusion s'op=E8re bien.

Afin d'automatiser ce syst=E8me, j'ai cr=E9=E9 un formulaire sous ACCESS et
je souhaite lancer le fichier par un 'clic' sur le bouton.
J'ai alors cr=E9=E9 un module VBA sous ACCESS, r=E9pondant au 'clic' et
lan=E7ant WORD, et ouvrant le fichier en question.
Le fichier s'ouvre, mais la fusion n'est pas r=E9alis=E9e.
Le r=E9sultat est le m=EAme qu'en lan=E7ant le fichier depuis l'explorateur
et en r=E9pondant NON =E0 l'ex=E9cution de la requ=EAte SQL.
Comme le montre le module ci-dessous, j'ai fait plusieurs essais.

Quelqu'un peut-il me venir en aide ?
---------------------------------------------------------------------------=
----------------------------------------------
Public Sub OuvertureFichierWord(StdDocName As String, SQLRequete As
String)
'On Error GoTo Err_OuvertureFichierWord
Dim oApp As Object

Dim R=E9pertoire As String

'r=E9pertoire ou se trouvent les fichiers
R=E9pertoire =3D CurrentProject.path & "\Mod=E8les de documents"

'D=E9claration de l'application WORD

On Error Resume Next
'D=E9tection de l'application WORD
Set oApp =3D GetObject(, "Word.Application")
'Si Word n'est pas ouvert, une erreur est g=E9n=E9r=E9e. Alors cr=E9ati=
on
d'une instance de WORD.
If Err.Number <> 0 Then
Set oApp =3D CreateObject("Word.Application")
Err.Clear 'effacement de l'objet Err
End If

With oApp
.Visible =3D True
.ChangeFileOpenDirectory R=E9pertoire

'ouverture du document
.Documents.Open fileName:=3DStdDocName

End With
'essai
' Set Doc =3D oApp.Documents.Open(StdDocName, False, True, False)
' Doc.MailMerge.Destination =3D wdSendToNewDocument
' Doc.MailMerge.Execute

'essai
' With oApp.ActiveDocument.MailMerge
' .OpenDataSource Name:=3DCurrentProject.path & "Gestion
certification.mdb", _
' ConfirmConversions:=3DTrue, ReadOnly:=3DFalse,
LinkToSource:=3DTrue, _
' AddToRecentFiles:=3DFalse, PasswordDocument:=3D"",
PasswordTemplate:=3D"", _
' WritePasswordDocument:=3D"", WritePasswordTemplate:=3D"",
Revert:=3DTrue, _
' Format:=3DwdOpenFormatAuto, Connection:=3D"QUERY " & SQLRequete,
_
' SQLStatement:=3D"SELECT * FROM [" & SQLRequete & "]",
SQLStatement1:=3D"", _
' SubType:=3DwdMergeSubTypeWord2000
' End With

Exit_OuvertureFichierWord:
Set oApp =3D Nothing
Exit Sub

End Sub

7 réponses

Avatar
Michel_D
Bonjour,

Si j'ai bien compris le problème, il y a une macro sous Word qui
s'exécute au démarrage lorsque tu lance ton fichier Word depuis
l'explorateur.

Lorsqu'on travaille avec un objet Word, Excel (createobject,getobject)
les fichiers annexes ne sont pas chargés (ici je pense le fichier qui
contient tes macros personnelles) et de toute façon les macros
automatiques qui se lançe au démarrage liées au fichier ne sont pas
lançées non plus, il faut rajouter le code pour les lançer.


"Aev" a écrit dans le message de news:
Bonjour à tous,

J'ai développé une base de donnée spous ACCESS, et j'utilise des
requêtes pour le publipostage sous WORD.
Lorsque je lance le fichier WORD depuis l'explorateur, une fenêtre
s'affiche me demandant l'autorisation d'exécuter la commande SQL - que
je valide - et la fusion s'opère bien.

Afin d'automatiser ce système, j'ai créé un formulaire sous ACCESS et
je souhaite lancer le fichier par un 'clic' sur le bouton.
J'ai alors créé un module VBA sous ACCESS, répondant au 'clic' et
lançant WORD, et ouvrant le fichier en question.
Le fichier s'ouvre, mais la fusion n'est pas réalisée.
Le résultat est le même qu'en lançant le fichier depuis l'explorateur
et en répondant NON à l'exécution de la requête SQL.
Comme le montre le module ci-dessous, j'ai fait plusieurs essais.

Quelqu'un peut-il me venir en aide ?
-------------------------------------------------------------------------------------------------------------------------
Public Sub OuvertureFichierWord(StdDocName As String, SQLRequete As
String)
'On Error GoTo Err_OuvertureFichierWord
Dim oApp As Object

Dim Répertoire As String

'répertoire ou se trouvent les fichiers
Répertoire = CurrentProject.path & "Modèles de documents"

'Déclaration de l'application WORD

On Error Resume Next
'Détection de l'application WORD
Set oApp = GetObject(, "Word.Application")
'Si Word n'est pas ouvert, une erreur est générée. Alors création
d'une instance de WORD.
If Err.Number <> 0 Then
Set oApp = CreateObject("Word.Application")
Err.Clear 'effacement de l'objet Err
End If

With oApp
.Visible = True
.ChangeFileOpenDirectory Répertoire

'ouverture du document
.Documents.Open fileName:=StdDocName

End With
'essai
' Set Doc = oApp.Documents.Open(StdDocName, False, True, False)
' Doc.MailMerge.Destination = wdSendToNewDocument
' Doc.MailMerge.Execute

'essai
' With oApp.ActiveDocument.MailMerge
' .OpenDataSource Name:=CurrentProject.path & "Gestion
certification.mdb", _
' ConfirmConversions:=True, ReadOnly:úlse,
LinkToSource:=True, _
' AddToRecentFiles:úlse, PasswordDocument:="",
PasswordTemplate:="", _
' WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:=True, _
' Format:=wdOpenFormatAuto, Connection:="QUERY " & SQLRequete,
_
' SQLStatement:="SELECT * FROM [" & SQLRequete & "]",
SQLStatement1:="", _
' SubType:=wdMergeSubTypeWord2000
' End With

Exit_OuvertureFichierWord:
Set oApp = Nothing
Exit Sub

End Sub
Avatar
Aev
On 11 oct, 09:46, "Michel_D"
wrote:
Bonjour,

Si j'ai bien compris le problème, il y a une macro sous Word qui
s'exécute au démarrage lorsque tu lance ton fichier Word depuis
l'explorateur.

Lorsqu'on travaille avec un objet Word, Excel (createobject,getobject)
les fichiers annexes ne sont pas chargés (ici je pense le fichier qui
contient tes macros personnelles) et de toute façon les macros
automatiques qui se lançe au démarrage liées au fichier ne sont pas
lançées non plus, il faut rajouter le code pour les lançer.

"Aev" a écrit dans le message denews:1192033512
Bonjour à tous,

J'ai développé une base de donnée spous ACCESS, et j'utilise des
requêtes pour le publipostage sous WORD.
Lorsque je lance le fichier WORD depuis l'explorateur, une fenêtre
s'affiche me demandant l'autorisation d'exécuter la commande SQL - que
je valide - et la fusion s'opère bien.

Afin d'automatiser ce système, j'ai créé un formulaire sous ACCESS et
je souhaite lancer le fichier par un 'clic' sur le bouton.
J'ai alors créé un module VBA sous ACCESS, répondant au 'clic' et
lançant WORD, et ouvrant le fichier en question.
Le fichier s'ouvre, mais la fusion n'est pas réalisée.
Le résultat est le même qu'en lançant le fichier depuis l'explorate ur
et en répondant NON à l'exécution de la requête SQL.
Comme le montre le module ci-dessous, j'ai fait plusieurs essais.

Quelqu'un peut-il me venir en aide ?
------------------------------------------------------------------------- --­----------------------------------------------
Public Sub OuvertureFichierWord(StdDocName As String, SQLRequete As
String)
'On Error GoTo Err_OuvertureFichierWord
Dim oApp As Object

Dim Répertoire As String

'répertoire ou se trouvent les fichiers
Répertoire = CurrentProject.path & "Modèles de documents"

'Déclaration de l'application WORD

On Error Resume Next
'Détection de l'application WORD
Set oApp = GetObject(, "Word.Application")
'Si Word n'est pas ouvert, une erreur est générée. Alors créa tion
d'une instance de WORD.
If Err.Number <> 0 Then
Set oApp = CreateObject("Word.Application")
Err.Clear 'effacement de l'objet Err
End If

With oApp
.Visible = True
.ChangeFileOpenDirectory Répertoire

'ouverture du document
.Documents.Open fileName:=StdDocName

End With
'essai
' Set Doc = oApp.Documents.Open(StdDocName, False, True, False)
' Doc.MailMerge.Destination = wdSendToNewDocument
' Doc.MailMerge.Execute

'essai
' With oApp.ActiveDocument.MailMerge
' .OpenDataSource Name:=CurrentProject.path & "Gestion
certification.mdb", _
' ConfirmConversions:=True, ReadOnly:úlse,
LinkToSource:=True, _
' AddToRecentFiles:úlse, PasswordDocument:="",
PasswordTemplate:="", _
' WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:=True, _
' Format:=wdOpenFormatAuto, Connection:="QUERY " & SQLRequete,
_
' SQLStatement:="SELECT * FROM [" & SQLRequete & "]",
SQLStatement1:="", _
' SubType:=wdMergeSubTypeWord2000
' End With

Exit_OuvertureFichierWord:
Set oApp = Nothing
Exit Sub

End Sub
--------------------------------------------------------------------------- ---------------------------------------------------------------

Bonjour Michel_D,

En fait le fichier WORD contient des champs de publipostage avec une
requête du fichier ACCESS dont il est question.
Le fichier WORD par lui même s'exécute correctement.
La commande de ce même fichier WORD (par un formulaire du fichier
ACCESS en question) fonctionne sur certains postes info, mais pas sur
tous.
Il y a vraiement une question d'installation ou (ce que je crois le
plus) un paramètre optionnel qui doit ABSOLUMENT être positionné. Mais
lequel ?

Un Pb Belge (ça marche ... ça marche pas ...) !!
Mais chi...
A+ pour de nouvelles idées, et merci.

Avatar
DENNLER Andre
Bonjour,

Depuis que je suis sous Office 2002 et j'ai rencontré le même problème, sous
la version 97 ça marchait impeccable, j'ai dèjà essayé de resoudre le
problème avec l'aide ACCESS et WORD mais sans résultat, il semble que la
sécurité renforcée ne permet plus cette commande directe, j'ouvre donc
manuellement mon fichier WORD et ça marche sans problème.
Si quelqu'un a trouvé la solution je suis aussi preneur.
--
Andre



On 11 oct, 09:46, "Michel_D"
wrote:
Bonjour,

Si j'ai bien compris le problème, il y a une macro sous Word qui
s'exécute au démarrage lorsque tu lance ton fichier Word depuis
l'explorateur.

Lorsqu'on travaille avec un objet Word, Excel (createobject,getobject)
les fichiers annexes ne sont pas chargés (ici je pense le fichier qui
contient tes macros personnelles) et de toute façon les macros
automatiques qui se lançe au démarrage liées au fichier ne sont pas
lançées non plus, il faut rajouter le code pour les lançer.

"Aev" a écrit dans le message denews:
Bonjour à tous,

J'ai développé une base de donnée spous ACCESS, et j'utilise des
requêtes pour le publipostage sous WORD.
Lorsque je lance le fichier WORD depuis l'explorateur, une fenêtre
s'affiche me demandant l'autorisation d'exécuter la commande SQL - que
je valide - et la fusion s'opère bien.

Afin d'automatiser ce système, j'ai créé un formulaire sous ACCESS et
je souhaite lancer le fichier par un 'clic' sur le bouton.
J'ai alors créé un module VBA sous ACCESS, répondant au 'clic' et
lançant WORD, et ouvrant le fichier en question.
Le fichier s'ouvre, mais la fusion n'est pas réalisée.
Le résultat est le même qu'en lançant le fichier depuis l'explorateur
et en répondant NON à l'exécution de la requête SQL.
Comme le montre le module ci-dessous, j'ai fait plusieurs essais.

Quelqu'un peut-il me venir en aide ?
---------------------------------------------------------------------------­----------------------------------------------
Public Sub OuvertureFichierWord(StdDocName As String, SQLRequete As
String)
'On Error GoTo Err_OuvertureFichierWord
Dim oApp As Object

Dim Répertoire As String

'répertoire ou se trouvent les fichiers
Répertoire = CurrentProject.path & "Modèles de documents"

'Déclaration de l'application WORD

On Error Resume Next
'Détection de l'application WORD
Set oApp = GetObject(, "Word.Application")
'Si Word n'est pas ouvert, une erreur est générée. Alors création
d'une instance de WORD.
If Err.Number <> 0 Then
Set oApp = CreateObject("Word.Application")
Err.Clear 'effacement de l'objet Err
End If

With oApp
.Visible = True
.ChangeFileOpenDirectory Répertoire

'ouverture du document
.Documents.Open fileName:=StdDocName

End With
'essai
' Set Doc = oApp.Documents.Open(StdDocName, False, True, False)
' Doc.MailMerge.Destination = wdSendToNewDocument
' Doc.MailMerge.Execute

'essai
' With oApp.ActiveDocument.MailMerge
' .OpenDataSource Name:=CurrentProject.path & "Gestion
certification.mdb", _
' ConfirmConversions:=True, ReadOnly:úlse,
LinkToSource:=True, _
' AddToRecentFiles:úlse, PasswordDocument:="",
PasswordTemplate:="", _
' WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:=True, _
' Format:=wdOpenFormatAuto, Connection:="QUERY " & SQLRequete,
_
' SQLStatement:="SELECT * FROM [" & SQLRequete & "]",
SQLStatement1:="", _
' SubType:=wdMergeSubTypeWord2000
' End With

Exit_OuvertureFichierWord:
Set oApp = Nothing
Exit Sub

End Sub
------------------------------------------------------------------------------------------------------------------------------------------

Bonjour Michel_D,

En fait le fichier WORD contient des champs de publipostage avec une
requête du fichier ACCESS dont il est question.
Le fichier WORD par lui même s'exécute correctement.
La commande de ce même fichier WORD (par un formulaire du fichier
ACCESS en question) fonctionne sur certains postes info, mais pas sur
tous.
Il y a vraiement une question d'installation ou (ce que je crois le
plus) un paramètre optionnel qui doit ABSOLUMENT être positionné. Mais
lequel ?

Un Pb Belge (ça marche ... ça marche pas ...) !!
Mais chi...
A+ pour de nouvelles idées, et merci.





Avatar
Fabien
Bonjour,

Depuis que je suis sous Office 2002 et j'ai rencontré le même problème, sous
la version 97 ça marchait impeccable, j'ai dèjà essayé de resoudre le
problème avec l'aide ACCESS et WORD mais sans résultat, il semble que la
sécurité renforcée ne permet plus cette commande directe, j'ouvre donc
manuellement mon fichier WORD et ça marche sans problème.
Si quelqu'un a trouvé la solution je suis aussi preneur.
Bonjour,

Est ce qu'un contournement pourrait être envisageable ?
Au lieu de faire faire la fusion par Word, Faire faire la fusion par ACCESS.
Il existe de très bon source sur le web qui explique comment manipuler
les signets de word par access. Le traitement permettant de remplacer
les signets par la valeurs des champs.
Si cette solution vous interesse je vous mettrais a disposition le code.
@+
Fabien

Avatar
Aev
On 11 oct, 13:41, Fabien wrote:
DENNLER Andre a écrit :> Bonjour,

Depuis que je suis sous Office 2002 et j'ai rencontré le même probl ème, sous
la version 97 ça marchait impeccable, j'ai dèjà essayé de resou dre le
problème avec l'aide ACCESS et WORD mais sans résultat, il semble q ue la
sécurité renforcée ne permet plus cette commande directe, j'ouvre donc
manuellement mon fichier WORD et ça marche sans problème.
Si quelqu'un a trouvé la solution je suis aussi preneur.


Bonjour,
Est ce qu'un contournement pourrait être envisageable ?
Au lieu de faire faire la fusion par Word, Faire faire la fusion par ACCE SS.
Il existe de très bon source sur le web qui explique comment manipuler
les signets de word par access. Le traitement permettant de remplacer
les signets par la valeurs des champs.
Si cette solution vous interesse je vous mettrais a disposition le code.
@+
Fabien


Le désavantage de cette méthode est qu'il faut avoir autant de
procédure de fusion qu'il y a de fichier WORD différent à commander
(ce qui est mon cas. C'est pourpuoi j'avais choisi la solution de
formaliser le publipostage dans chaque fichier WORD.

Ce qui me gène le plus, c'est que cette application fonctionne sur
certains postes, mais pas sur d'autres; sans savoir pourquoi. J'ai
vérifié la configuration des outils d'administration et base de
données, mais RIEN.
Qui a une idée de génie ?
Je j'ai pas accès à la Hot line Microsoft pat faute d'abonnement...

Cordialement,
AEV


Avatar
Laurent DUB
Bonjour AEV,
Personnellement, j'utilise des fichiers word ayant pour
données un fichier excel issu d'une requête
'docmd.TransferSpreadsheet acExport,acSpreadsheetTypeExcel9,"marequete"...
si ça peut vous faire avancer
Cordialement
Lr Db


Le désavantage de cette méthode est qu'il faut avoir autant de
procédure de fusion qu'il y a de fichier WORD différent à commander
(ce qui est mon cas. C'est pourpuoi j'avais choisi la solution de
formaliser le publipostage dans chaque fichier WORD.

Ce qui me gène le plus, c'est que cette application fonctionne sur
certains postes, mais pas sur d'autres; sans savoir pourquoi. J'ai
vérifié la configuration des outils d'administration et base de
données, mais RIEN.
Qui a une idée de génie ?
Je j'ai pas accès à la Hot line Microsoft pat faute d'abonnement...

Cordialement,
AEV
Avatar
Rv
Salut,

Il s'agit sans doute du message Word demandant l'autorisation d'exécuter la
commande SQL et il peut être désactivé par la procédure ci-dessous:

Dans la base de registre:
- Accèder à la clé HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/10.0 (ou
11.0)/WORD/OPTIONS
- A ce niveau créer une nouvelle clé de type DWORD qu'il faut nommer
"SQLSecurityCheck". (il faut repecter la casse)
- Au final le type de clé nouvellement créé doit être "REG_DWORD" et sa
valeur "0x00000000 (0)"

Tiens moi au courant STP car je n'ai pas testé!

A+

Rv


"Aev" a écrit dans le message de
news:
Bonjour à tous,

J'ai développé une base de donnée spous ACCESS, et j'utilise des
requêtes pour le publipostage sous WORD.
Lorsque je lance le fichier WORD depuis l'explorateur, une fenêtre
s'affiche me demandant l'autorisation d'exécuter la commande SQL - que
je valide - et la fusion s'opère bien.

Afin d'automatiser ce système, j'ai créé un formulaire sous ACCESS et
je souhaite lancer le fichier par un 'clic' sur le bouton.
J'ai alors créé un module VBA sous ACCESS, répondant au 'clic' et
lançant WORD, et ouvrant le fichier en question.
Le fichier s'ouvre, mais la fusion n'est pas réalisée.
Le résultat est le même qu'en lançant le fichier depuis l'explorateur
et en répondant NON à l'exécution de la requête SQL.
Comme le montre le module ci-dessous, j'ai fait plusieurs essais.

Quelqu'un peut-il me venir en aide ?
-------------------------------------------------------------------------------------------------------------------------
Public Sub OuvertureFichierWord(StdDocName As String, SQLRequete As
String)
'On Error GoTo Err_OuvertureFichierWord
Dim oApp As Object

Dim Répertoire As String

'répertoire ou se trouvent les fichiers
Répertoire = CurrentProject.path & "Modèles de documents"

'Déclaration de l'application WORD

On Error Resume Next
'Détection de l'application WORD
Set oApp = GetObject(, "Word.Application")
'Si Word n'est pas ouvert, une erreur est générée. Alors création
d'une instance de WORD.
If Err.Number <> 0 Then
Set oApp = CreateObject("Word.Application")
Err.Clear 'effacement de l'objet Err
End If

With oApp
.Visible = True
.ChangeFileOpenDirectory Répertoire

'ouverture du document
.Documents.Open fileName:=StdDocName

End With
'essai
' Set Doc = oApp.Documents.Open(StdDocName, False, True, False)
' Doc.MailMerge.Destination = wdSendToNewDocument
' Doc.MailMerge.Execute

'essai
' With oApp.ActiveDocument.MailMerge
' .OpenDataSource Name:=CurrentProject.path & "Gestion
certification.mdb", _
' ConfirmConversions:=True, ReadOnly:úlse,
LinkToSource:=True, _
' AddToRecentFiles:úlse, PasswordDocument:="",
PasswordTemplate:="", _
' WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:=True, _
' Format:=wdOpenFormatAuto, Connection:="QUERY " & SQLRequete,
_
' SQLStatement:="SELECT * FROM [" & SQLRequete & "]",
SQLStatement1:="", _
' SubType:=wdMergeSubTypeWord2000
' End With

Exit_OuvertureFichierWord:
Set oApp = Nothing
Exit Sub

End Sub