Bonjour bonjour,
Voila j'ai une BDD access séparé en deux
- un fichier client (dans le dossier : file_bddc) avec requetes formulaires etats
- un fichier serveur (dans le dossier : file_bdd) avec les tables
- un fichier sécurité .mdw (dans le dossier file_bddw)
Je souhaiterais faire un publipostage dans word en cliquant sur un bouton dans Access. J'ajoute la librairie "Microsoft Word Object Library" afin de me servir du mail merge.
Voila le début de mon code qui fonctionne
C'est a partir de la que ca se complique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim objDoc As Word.Document Dim file As String file = "adresse de mon fichier a publier" fermer_fichier_word (file) 'ferme le fichier si ouvert Set objDoc = GetObject(file, "Word.document") objDoc.Application.Visible = True
- Ou bien je reussi a me connecter directement au fichier serveur file_bdd
- Ou bien je cree une table en local sur file_bddc et connecte word a cette table
Aucune des deux solutions ne fonctionne, a savoir que je preferai me connecter directement a la base pour ne pas avoir a modifier le fichier en local.
1 SOLUTION : connection au fichier distant :
Cela m'ouvre une fenetre me permettant de choisir une table de file_bdd.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim strConnection As String strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Password=""motdepasse"";" & _ "User ID=user;Data Source=" & file_bdd & ";" & _ "Mode=Read;Jet OLEDB:System database=" & file_bddw & ";" Dim sql As String sql = "Requete SQL qui fonctionne parfaitement en la mettant directement dans access" objDoc.MailMerge.OpenDataSource _ Name:=file_bdd, _ Connection:=strConnection, _ SQLStatement:=sql
J'en choisi une bien que je souhaite prendre des informations de plusieurs tables liées entre elles.
Apres cela : Erreur 5922 "Word n'a pas pu ouvrir la source de données." (déboguage sur le OpenDataSource)
2 SOLUTION : Creation d'une table en local replique de la requete
Erreur => "Une erreur s'est produite: La base de données a été placée par l'utilisateur "Admin" sur "Pc-utilisateur" dans un état l'empechant d'etre ouverte ou vérouillée."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Dim strConnection As String strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Password=""motdepasse"";" & _ "User ID=user;Data Source=" & file_bddc & ";" & _ "Mode=Read;Jet OLEDB:System database=" & file_bddw & ";" Dim sql As String sql = Requete SQL qui fonctionne parfaitement en la mettant directement dans access creant "MergeTable" DoCmd.RunSQL (sql) objDoc.MailMerge.OpenDataSource _ Name:=CurrentDb.Name, _ Connection:=strConnection, _ SQLStatement:="SELECT * FROM [MergeTable]"
Puis m'ouvre une fenetre "proprietes des liaisons de données", je reconfigure avec l'assistant, toujours la meme erreur.
Derriere Access a toujours la meme erreur 5922.
Si quelqu'un pouvait m'aider a configurer correctement cette OpenDataSource. Le mieux serait de se connecter directement au fichier distant. Ou bien pouvoir directement transmettre un Recordset a Word sans avoir a réouvrir la base.
Merci pour votre aide cela fait une semaine que je recherche une solution a mon problème !
Gabvoir
Partager