Comment automatiser Microsoft Word à l’aide de Visual Basic pour créer un document

Résumé

Cet article pas à pas explique comment créer un document dans Word à l’aide d’Automation à partir de Visual Basic.

Exemple de code

L’exemple de code de cet article montre comment effectuer les opérations suivantes :

  • Insérer des paragraphes avec du texte et une mise en forme.
  • Parcourez et modifiez différentes plages dans un document.
  • Insérez des tables, mettez en forme des tables et remplissez les tables avec des données.
  • Ajoutez un graphique.

Pour créer un document Word à l’aide d’Automation à partir de Visual Basic, procédez comme suit :

  1. En Visual Basic, créez un projet EXE standard. Form1 est créé par défaut.

  2. Dans le menu Projet , cliquez sur Références, sur l’une des optionssuivantes, puis sur OK :

    • Pour Office Word 2007, cliquez sur Bibliothèque d’objets Microsoft Word 12.0.
    • Pour Word 2003, cliquez sur Bibliothèque d’objets Microsoft Word 11.0.
    • Pour Word 2002, cliquez sur Bibliothèque d’objets Microsoft Word 10.0.
    • Pour Word 2000, cliquez sur Bibliothèque d’objets Microsoft Word 9.0.
  3. Ajoutez un contrôle CommandButton à Form1.

  4. Ajoutez le code suivant à l’événement Click pour Command1 :

     Dim oWord As Word.Application
     Dim oDoc As Word.Document
     Dim oTable As Word.Table
     Dim oPara1 As Word.Paragraph, oPara2 As Word.Paragraph
     Dim oPara3 As Word.Paragraph, oPara4 As Word.Paragraph
     Dim oRng As Word.Range
     Dim oShape As Word.InlineShape
     Dim oChart As Object
     Dim Pos as Double
    
     'Start Word and open the document template.
     Set oWord = CreateObject("Word.Application")
     oWord.Visible = True
     Set oDoc = oWord.Documents.Add
    
     'Insert a paragraph at the beginning of the document.
     Set oPara1 = oDoc.Content.Paragraphs.Add
     oPara1.Range.Text = "Heading 1"
     oPara1.Range.Font.Bold = True
     oPara1.Format.SpaceAfter = 24    '24 pt spacing after paragraph.
     oPara1.Range.InsertParagraphAfter
    
     'Insert a paragraph at the end of the document.
     '** \endofdoc is a predefined bookmark.
     Set oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)
     oPara2.Range.Text = "Heading 2"
     oPara2.Format.SpaceAfter = 6
     oPara2.Range.InsertParagraphAfter
    
     'Insert another paragraph.
     Set oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)
     oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:"
     oPara3.Range.Font.Bold = False
     oPara3.Format.SpaceAfter = 24
     oPara3.Range.InsertParagraphAfter
    
     'Insert a 3 x 5 table, fill it with data and make the first row
     'bold,italic.
     Dim r As Integer, c As Integer
     Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("\endofdoc").Range, 3, 5)
     oTable.Range.ParagraphFormat.SpaceAfter = 6
     For r = 1 To 3
         For c = 1 To 5
             oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
         Next
     Next
     oTable.Rows(1).Range.Font.Bold = True
     oTable.Rows(1).Range.Font.Italic = True
    
     'Add some text after the table.
     'oTable.Range.InsertParagraphAfter
     Set oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)
     oPara4.Range.InsertParagraphBefore
     oPara4.Range.Text = "And here's another table:"
     oPara4.Format.SpaceAfter = 24
     oPara4.Range.InsertParagraphAfter
    
     'Insert a 5 x 2 table, fill it with data and change the column widths.
     Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("\endofdoc").Range, 5, 2)
     oTable.Range.ParagraphFormat.SpaceAfter = 6
     For r = 1 To 5
         For c = 1 To 2
             oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
         Next
     Next
     oTable.Columns(1).Width = oWord.InchesToPoints(2)   'Change width of columns 1 & 2.
     oTable.Columns(2).Width = oWord.InchesToPoints(3)
    
     'Keep inserting text. When you get to 7 inches from top of the
     'document, insert a hard page break.
     Pos = oWord.InchesToPoints(7)
     oDoc.Bookmarks("\endofdoc").Range.InsertParagraphAfter
     Do
         Set oRng = oDoc.Bookmarks("\endofdoc").Range
         oRng.ParagraphFormat.SpaceAfter = 6
         oRng.InsertAfter "A line of text"
         oRng.InsertParagraphAfter
     Loop While Pos >= oRng.Information(wdVerticalPositionRelativeToPage)
     oRng.Collapse (wdCollapseEnd)
     oRng.InsertBreak wdPageBreak
     oRng.Collapse wdCollapseEnd
     oRng.InsertAfter "We're now on page 2. Here's my chart:"
     oRng.InsertParagraphAfter
    
     'Insert a chart and change the chart.
     Set oShape = oDoc.Bookmarks("\endofdoc").Range.InlineShapes.AddOLEObject( _
         ClassType:="MSGraph.Chart.8", FileName _
         :="", LinkToFile:=False, DisplayAsIcon:=False)
     Set oChart = oShape.OLEFormat.Object
     oChart.charttype = 4 'xlLine = 4
     oChart.Application.Update
     oChart.Application.Quit
     '... If desired, you can proceed from here using the Microsoft Graph 
     'Object model on the oChart object to make additional changes to the
     'chart.
     oShape.Width = oWord.InchesToPoints(6.25)
     oShape.Height = oWord.InchesToPoints(3.57)
    
     'Add text after the chart.
     Set oRng = oDoc.Bookmarks("\endofdoc").Range
     oRng.InsertParagraphAfter
     oRng.InsertAfter "THE END."
    
     'All done. Unload this form.
     Unload Me
    
    
  5. Appuyez sur F5 pour exécuter le programme, puis cliquez sur Command1.

Une fois le code terminé, examinez le document qui a été créé pour vous. Le document contient deux pages de paragraphes mis en forme, des tableaux et un graphique.

Utiliser un modèle

Si vous utilisez Automation pour créer des documents qui sont tous dans un format commun, vous pouvez tirer parti du démarrage du processus avec un nouveau document basé sur un modèle préformaté. L’utilisation d’un modèle avec votre client Word Automation présente deux avantages significatifs par rapport à la création d’un document à partir de rien :

  • Vous pouvez avoir un meilleur contrôle sur la mise en forme et le placement des objets dans vos documents.
  • Vous pouvez générer vos documents avec moins de code.

À l’aide d’un modèle, vous pouvez ajuster le positionnement des tableaux, paragraphes et autres objets dans le document, ainsi qu’inclure une mise en forme sur ces objets. À l’aide d’Automation, vous pouvez créer un document basé sur votre modèle avec du code tel que le suivant :

oWord.Documents.Add "<Path to your template>\MyTemplate.dot"

Dans votre modèle, vous pouvez définir des signets afin que votre client Automation puisse remplir du texte variable à un emplacement spécifique du document, comme suit :

oDoc.Bookmarks("MyBookmark").Range.Text = "Some Text Here"

Un autre avantage de l’utilisation d’un modèle est que vous pouvez créer et stocker des styles de mise en forme que vous souhaitez appliquer au moment de l’exécution, comme suit :

oDoc.Bookmarks("MyBookmark").Range.Style = "MyStyle"

ou

oWord.Selection.Style = "MyStyle"

References

Pour plus d’informations, cliquez sur les numéros d’article ci-dessous pour afficher les articles de la Base de connaissances Microsoft :

285332 Comment automatiser Word 2002 avec Visual Basic pour créer une fusion et publipostage

Développement Microsoft Office avec Visual Studio

(c) Microsoft Corporation 2001, Tous droits réservés. Contributions de Lori B. Turner, Microsoft Corporation.