[Catégorie modifiée .Net -> VBA] problème de connexion word vers access avec ado

Résolu
Messages postés
35
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
25 août 2012
-
Messages postés
35
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
25 août 2012
-
j'utilise une base access lié à word pour faire du publipostage (c'est la suite 2003).
Je trouve qu'il serait pratique que les renseignements que des documents édités en word se retrouve dans access. Par exemple, le nombre de page du documents, la date de création, l'url menant au document...
j'ai créé un code vba dans word qui en principe devrait ouvrir le lien vers ma base (C:\base\cabinet.mdb) puis vers ma table (T_Document/général) pour y insérer dans le champs (document_nbre_page) le renseignement utile (nbrepage).
Mon code bloque à l'endroit où j'ai mis une étoile à l'endroit où ça bloque. le message "instruction sql non valide. delete, insert, procedure, select ou update attendus".
Si quelqu'un a une idée, ce serait fantastique.
Merci à tous.



Sub échange()
'ajoute un enregistrement dans une table Access
'necessite d'activer la reference
'Microsoft ActiveX Data Objects x.x Library
Dim Conn As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim fd As ADODB.Field
Dim maTable As String

Set Conn = New ADODB.Connection
Set rsT = New ADODB.Recordset
With ActiveDocument
nomdoc = .FullName
auteurdoc = .BuiltInDocumentProperties(wdPropertyLastAuthor)
nbrepage = .BuiltInDocumentProperties(wdPropertyPages)
creation = .BuiltInDocumentProperties(wdPropertyTimeCreated)
End With

maTable = "T_Document/général"

With Conn
.Provider = "Microsoft.JET.OLEDB.4.0"
.Open "C:\base\cabinet.mdb"
End With


With rsT
.ActiveConnection = Conn

'***********ça bloque juste après**************
.Open maTable, LockType:=adLockOptimistic
.AddNew
.Fields("document_nbre_page").Value = nbrepage
.Update
End With

rsT.Close
Conn.Close


End Sub

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Pas bonjour non plus

La prochaine fois, utilise la coloration syntaxique pour coller ton code (3ème icone à droite) = conserve l'indentation des lignes (espaces en tête de ligne) et plus facile à relire.

- La syntaxe d'une table ne peut pas comporter de / façon répertoire.

- Essaye plutôt ce genre de syntaxe simple :
.Open "Select * From " & maTable, ...

- Ensuite, le RecordSet doit savoir à quelle connexion tu t'adresses : il manque ce paramètre dans ton .Open :
.Open "Select * From " & maTable, Conn, ...

- D'autre part, si tu insères une ligne avec uniquement le nombre de pages, comment feras-tu le lien avec le nom du document associé ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
35
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
25 août 2012

Bonjour,
Désolé d'avoir été un peu abrupt dans ma présentation.
Le stress d'une trop longue nuit, j'imagine.
Je vais tester de ce pas le code.
Merci beaucoup.
Messages postés
35
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
25 août 2012

j'ai testé en changeant au départ le nom de la table pour supprimer le /... et là, miraculus, tout fonctionne. Bien entendu, mon exemple avec le nombre de page ne constituait qu'un début. J'ai adapté et dans ma table figure également le nom du fichier, l'auteur et, par ailleurs, un champ reprenant le nom du dossier concerné.
Merci en tout cas infiniment. Des heures de migraines inutiles auront pris fin grâce à toi.