OVH Cloud OVH Cloud

Automatiser un publipostage dans word a partir d'Access

3 réponses
Avatar
Yvanb
Bonjour à tous,

J'essaie d'automatiser l'impression d'étiquettes dans Word à partir de
données contenues dans une requete access. Je demande à l'utilisateur de
m'indiquer par des crochets les étiquettes qu'il veut imprimer. Par la suite
il doit seulement peser sur un bouton "imprimer" pour ouvrir word et creer un
document par publipostage qu'il ne lui reste qu'a imprimer. Je suis capable
d'ouvrir word mais incapable d'automatiser le publipostage.

Voici le corps du code:


"Dim oApp As Word.Application
Set oApp = CreateObject("Word.Application")
oApp.Visible = True
oApp.Documents.Open ("C:\Documents and Settings\Yvan Breault\My
Documents\Docs Offline\Nordic\Carte_Kanban1")
oApp.ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:\Documents and Settings\Yvan Breault\My Documents\Docs
Offline\Nordic\NORDICKanban070605.mdb" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data
Source=C:\Documents and Settings\Yvan Breault\My Documents\Docs
Offline\Nordic\NORDICKanban070605.mdb;Mode=Read;Extended Properties="""";Jet
OLEDB:System database="""";Jet OLEDB:Registry Path="""";" _
, SQLStatement:="SELECT * FROM `Req_Carte_Kanban`",
SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
oApp.ActiveDocument.MailMerge.Destination = wdSendToNewDocument
oApp.ActiveDocument.MailMerge.Execute
Set oApp = Nothing"

L'erreur est la suivante:

The database has been placed in a state that prevents it from being opened
or locked.

Je comprends ce qui se passe c.a.d que puisque je suis déja dans la base de
données de laquelle word prends ses infos, cette base de donnée n'est pas
disponible pour la lecture. Mais je ne sais pas comment contourner ce
problème.

J'utilise office 2003

A l'aide

Merci

Yvanb

3 réponses

Avatar
Raymond [mvp]
Bonjour.

tu trouveras deux exemples de code qui fonctionne pour le publipostage sur
la page:
http://officesystem.access.free.fr/vba/publipostage.htm

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Yvanb" a écrit dans le message de news:

Bonjour à tous,

J'essaie d'automatiser l'impression d'étiquettes dans Word à partir de
données contenues dans une requete access. Je demande à l'utilisateur de
m'indiquer par des crochets les étiquettes qu'il veut imprimer. Par la
suite
il doit seulement peser sur un bouton "imprimer" pour ouvrir word et creer
un
document par publipostage qu'il ne lui reste qu'a imprimer. Je suis
capable
d'ouvrir word mais incapable d'automatiser le publipostage.

Voici le corps du code:


"Dim oApp As Word.Application
Set oApp = CreateObject("Word.Application")
oApp.Visible = True
oApp.Documents.Open ("C:Documents and SettingsYvan BreaultMy
DocumentsDocs OfflineNordicCarte_Kanban1")
oApp.ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:Documents and SettingsYvan BreaultMy DocumentsDocs
OfflineNordicNORDICKanban070605.mdb" _
, ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True, _
AddToRecentFiles:úlse, PasswordDocument:="",
PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:úlse, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID­min;Data
Source=C:Documents and SettingsYvan BreaultMy DocumentsDocs
OfflineNordicNORDICKanban070605.mdb;Mode=Read;Extended
Properties="""";Jet
OLEDB:System database="""";Jet OLEDB:Registry Path="""";" _
, SQLStatement:="SELECT * FROM `Req_Carte_Kanban`",
SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
oApp.ActiveDocument.MailMerge.Destination = wdSendToNewDocument
oApp.ActiveDocument.MailMerge.Execute
Set oApp = Nothing"

L'erreur est la suivante:

The database has been placed in a state that prevents it from being
opened
or locked.

Je comprends ce qui se passe c.a.d que puisque je suis déja dans la base
de
données de laquelle word prends ses infos, cette base de donnée n'est pas
disponible pour la lecture. Mais je ne sais pas comment contourner ce
problème.

J'utilise office 2003

A l'aide

Merci

Yvanb



Avatar
Yvanb
Merci Raymond pour tes info mais je ne réussis toujours pas à faire ce que je
veux. Le code que j'ai inscrit fonctionne bien si je le fait rouler à partir
d'une base de donnée autre que celle ou est située ma source de données mais
ce n'est pas ce que je veux. Je veux piloter le publipostage dans word à
partir de la base de données qui contient la source des données et c'est là
que word me dit que cette source ne peut être ouverte parce qu'elle est dans
un état qui l'empêche d'être ouverte.

????


Yvanb

"Raymond [mvp]" wrote:

Bonjour.

tu trouveras deux exemples de code qui fonctionne pour le publipostage sur
la page:
http://officesystem.access.free.fr/vba/publipostage.htm

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Yvanb" a écrit dans le message de news:

Bonjour à tous,

J'essaie d'automatiser l'impression d'étiquettes dans Word à partir de
données contenues dans une requete access. Je demande à l'utilisateur de
m'indiquer par des crochets les étiquettes qu'il veut imprimer. Par la
suite
il doit seulement peser sur un bouton "imprimer" pour ouvrir word et creer
un
document par publipostage qu'il ne lui reste qu'a imprimer. Je suis
capable
d'ouvrir word mais incapable d'automatiser le publipostage.

Voici le corps du code:


"Dim oApp As Word.Application
Set oApp = CreateObject("Word.Application")
oApp.Visible = True
oApp.Documents.Open ("C:Documents and SettingsYvan BreaultMy
DocumentsDocs OfflineNordicCarte_Kanban1")
oApp.ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:Documents and SettingsYvan BreaultMy DocumentsDocs
OfflineNordicNORDICKanban070605.mdb" _
, ConfirmConversions:úlse, ReadOnly:úlse, LinkToSource:=True, _
AddToRecentFiles:úlse, PasswordDocument:="",
PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:úlse, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID­min;Data
Source=C:Documents and SettingsYvan BreaultMy DocumentsDocs
OfflineNordicNORDICKanban070605.mdb;Mode=Read;Extended
Properties="""";Jet
OLEDB:System database="""";Jet OLEDB:Registry Path="""";" _
, SQLStatement:="SELECT * FROM `Req_Carte_Kanban`",
SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
oApp.ActiveDocument.MailMerge.Destination = wdSendToNewDocument
oApp.ActiveDocument.MailMerge.Execute
Set oApp = Nothing"

L'erreur est la suivante:

The database has been placed in a state that prevents it from being
opened
or locked.

Je comprends ce qui se passe c.a.d que puisque je suis déja dans la base
de
données de laquelle word prends ses infos, cette base de donnée n'est pas
disponible pour la lecture. Mais je ne sais pas comment contourner ce
problème.

J'utilise office 2003

A l'aide

Merci

Yvanb








Avatar
Raymond [mvp]
tes données sont apparemment ouvertes sur word et sur access. essaie de ne
pas les ouvrir sous word mais seulement du côté access. si ce n'est pas
possible, fais le contraire, supprime tout ce qui ouvre les données dans ta
procédure access.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Yvanb" a écrit dans le message de news:

Merci Raymond pour tes info mais je ne réussis toujours pas à faire ce que
je
veux. Le code que j'ai inscrit fonctionne bien si je le fait rouler à
partir
d'une base de donnée autre que celle ou est située ma source de données
mais
ce n'est pas ce que je veux. Je veux piloter le publipostage dans word à
partir de la base de données qui contient la source des données et c'est

que word me dit que cette source ne peut être ouverte parce qu'elle est
dans
un état qui l'empêche d'être ouverte.

????