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

Résolu
huascaran01 Messages postés 35 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 25 août 2012 - 23 juin 2011 à 07:59
huascaran01 Messages postés 35 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 25 août 2012 - 23 juin 2011 à 15:53
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 juin 2011 à 08:28
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)
3
huascaran01 Messages postés 35 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 25 août 2012
23 juin 2011 à 15:33
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.
0
huascaran01 Messages postés 35 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 25 août 2012
23 juin 2011 à 15:53
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.
0
Rejoignez-nous