jordane45
Messages postés38238Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 6 septembre 2024
-
27 août 2010 à 11:32
jordane45
Messages postés38238Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 6 septembre 2024
-
27 août 2010 à 14:19
Bonjour,
J'ai besoin de récuperer un certain nombre de champs d'un document Word dans Excel.
Pour l'instant j'ai ceci :
Sub ExtractionDonneesDansChampWord()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
'ouvre session word
Set WordApp = New Word.Application
'ouvre document Word
Set WordDoc = WordApp.Documents.Open("D:\mondocument.doc")
'word est masqué pendant l'opération
WordApp.Visible = False
'Récupère le contenu d'un champ
'Fields(1) : premier champ du document Word
For i = 1 To WordDoc.Fields.Count
If WordDoc.Fields(i).Result <> "" Then
Debug.Print "I" & i & "> " & WordDoc.Fields(i).Result.Text
End If
Next
'Ferme le document word
WordDoc.Close False
'ferme la session Word
WordApp.Quit
End Sub
Le souci est que je n'arrive pas a lire les champs de type liste ou case à cocher.
Auriez vous une idée ?
Par avance merci.
Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
jordane45
Messages postés38238Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 6 septembre 2024345 27 août 2010 à 14:19
Bonjour,
Après quelques recherches plus poussées j'ai fini par trouver...;
Voici donc mon code "final" qui me permet de lire les champs (tous les champs) d'un document word depuis le VBA d'excel :
Sub ExtractionDonneesDansChampWord()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim Valeur As Variant
'ouvre session word
Set WordApp = New Word.Application
'ouvre document Word
Set WordDoc = WordApp.Documents.Open("D:\MonDocument.doc")
'word est masqué pendant l'opération
WordApp.Visible = False
'Récupère le contenu d'un champ
'Fields(1) : premier champ du document Word
For i = 1 To WordDoc.Fields.Count
'recupération de la valeur du champ en fonction de son type
TYP = WordDoc.Fields(i).Code
Select Case TYP
Case " FORMTEXT "
Valeur = WordDoc.Fields(i).Result.Text
Case " FORMDROPDOWN "
Valeur = WordDoc.FormFields(i).DropDown.ListEntries(WordDoc.FormFields(i).DropDown.Value).Name
Case " FORMCHECKBOX "
On Error Resume Next
Valeur = WordDoc.FormFields(i).CheckBox.Value
Case Else
Valeur = "Type Inconnu : " & TYP
End Select
'Affichage dans le debugeur
Debug.Print "I" & i & " code: " & WordDoc.Fields(i).Code & "> " & Valeur
Next
'Ferme le document word
WordDoc.Close False
'ferme la session Word
WordApp.Quit
End Sub
Explications :
En fait, il a fallu que je décompose mon code en fonction du TYPE de champ utilisé : Champ TEXTE, CHECKBOX, Liste déroulante (DROPDOWN).
Je parcours donc le document, récupère le type de champ (avec la propriété CODE) puis en fonction du code j'en lis le contenu (chacun ayant une méthode déifférente pour obtenir sa valeur)...
En espérant que cela puisse vous servir...
Et merci à ceux qui auraient pris le temps de chercher à m'aider.
Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI