Fusion WORD avec une requête ACCESS depuis VBA ACCESS

Le
Aev
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éati=
on
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:=False,
LinkToSource:=True, _
' AddToRecentFiles:=False, 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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel_D
Le #6387831
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" 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
Aev
Le #6387781
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" 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.

DENNLER Andre
Le #6387761
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" 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.





Fabien
Le #6387671
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

Aev
Le #6329471
On 11 oct, 13:41, Fabien
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


Laurent DUB
Le #6329171
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
Rv
Le #6328881
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" 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
Publicité
Poster une réponse
Anonyme