Retraitement d'un document Word
-
mardi 31 août 2010 15:19
Bonjour,
Sous VS 2010 Professionnel, est-il possible de "retraiter" un document Word 2007 avec des procédures VB ou C# ?
Par "retraiter" je veux dire lire ce document et y retrouver par exemple un certains nombre de mots.
Comment faire ? Où trouver des exemples et la doc explicative ?
Merci de vos réponses.
Alain
Toutes les réponses
-
vendredi 17 septembre 2010 13:13
Bonjour,
Un document Word sera toujours composé de Word, de Sentences... et quelque soit le langage, le modèle objet de Word reste le même.
Donc dans une boucle For/Next, vous pouvez parcourir l'ensemble des paragraphes et d'aboutir à vos fins.
Argy -
vendredi 17 septembre 2010 13:51
Merci beaucoup pour cette réponse qui m'éclaire. Mais où peut-on trouver un petit exemple de code de retraitement (lecture-écriture) de document Word ?
Est-ce la même chose pour Excel ?
Cordialement
Alain -
vendredi 17 septembre 2010 14:37
Bien en VBA, cela donne par exemple :
Option Explicit Private Sub Test() Dim strWordToFind As String Dim lngCount As Long Const CASE_SENSITIVE As Integer = 0 Const NO_CASE_SENSITIVE As Integer = 1 strWordToFind = InputBox$("Quel mot cherchez-vous dans le document ?", "Mot à retrouver") If Len(strWordToFind) Then If FindWords(strWordToFind, CASE_SENSITIVE, lngCount) Then MsgBox "Il y a " & IIf(lngCount = 1, "1 mot", Trim$(Str(lngCount))) & " mots trouvés" & " dans ce document..." Else MsgBox "Aucune occurence ne correspond au mot " & strWordToFind, vbInformation End If End If End Sub Private Function FindWords(ByVal WhatWord As String, ByVal MatchCase As Integer, ByRef Count As Long) As Boolean Dim oDoc As Word.Document Dim W As Object Set oDoc = ActiveDocument For Each W In oDoc.Words If StrComp(Trim$(W), WhatWord, MatchCase) = 0 Then Count = Count + 1 End If Next FindWords = (Count > 1)<br/> Set oDoc = Nothing 'Not in VB.net End Function
N'ayant pas VS 2010, je ne peux vous transposer avec du .net
Il vous appartient de réécrire la procédure avec les fonctions qui s'imposent e.g.
Trim$(Str(lngCount))) vs lngCount.ToString("N") par exemple
Mais grossièrement, il n'y a pas de grosses différences hormi l'initialisation de l'objet document (Interop) notamment...
Argy -
vendredi 17 septembre 2010 21:00
Merci beaucoup Argy pour votre aide. Cette procédure m'apporte des informations. Dommage qu'elle ne soit pas en .NET mais c'est déja ça !
Est-il concevable d'écrire un programme qui ouvre un document Office pour travailler dessus ou, au contraire, ce programme doit-il être intégré au document Office lui-même ?
Où puis-je trouver la doc concernant l'utilisation d'Office avec VS ?
Merci
Alain -
samedi 18 septembre 2010 11:30
La connaissance de VBA est indispensable pour faire du .net (C# ou VB).
Les documents, classeurs et présentation auront toujours leur propriétés et méthodes quel que soit le langage...
Dans un premier temps, je vous conseille de vous entrrainer sur Word lui-même afin d'arriver à vos fins.
La transposition en VSO sera qu'un jeu d'enfant...
Argy -
samedi 18 septembre 2010 12:03
Merci Argy pour vos conseils. Je pense que je vais y arriver. J'ai découvert le didacticiel Office dans VS.
Si non, je posterai un message plus ciblé.
Bien cordialement
Alain

