Cómo automatizar Microsoft Word mediante Visual Basic para crear un nuevo documento

Resumen

En este artículo paso a paso se describe cómo crear un documento nuevo en Word utilizando automatización desde Visual Basic.

Código de ejemplo

El código de ejemplo en este artículo muestra cómo hacer lo siguiente:
  • hol mi minho
  • Examinar y modificar varios intervalos dentro de un documento.
  • Insertar tablas, dar formato a tablas y llenar las tablas con datos.
  • Agregar un gráfico.
Para crear un nuevo documento de Word utilizando automatización desde Visual Basic, siga estos pasos:
  1. En Visual Basic, cree un nuevo proyecto EXE estándar. Se creará Form1 de forma predeterminada.
  2. En el menú proyecto , haga clic enreferencias, haga clic en una de las siguientes opciones y, a continuación, haga clic en Aceptar:
    • Para Office Word 2007, haga clic en Biblioteca de objetos de Microsoft Word 2007.
    • Para Word 2003, haga clic en Microsoft Word 11.0 Object Library.
    • Para Word 2002, haga clic en Biblioteca de objetos de Microsoft Word 10.0.
    • Para Word 2000, haga clic en Biblioteca de objetos de Microsoft Word 9.0.
  3. Agregue un control CommandButton a Form1.
  4. Agregue el código siguiente al evento Click de 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. Presione F5 para ejecutar el programa y, a continuación, haga clic en Command1.
Después de que finalice el código, examinar el documento que se creó para usted. El documento contiene dos páginas de párrafos con formato, tablas y un gráfico.

Utilizar una plantilla

Si se usa la automatización para la creación de documentos que están en un formato común, puede beneficiarse iniciando el proceso con un nuevo documento basado en una plantilla con formato previo. Mediante una plantilla con el cliente de automatización de Word tiene dos ventajas significativas sobre la creación de un documento de nada:
  • Puede tener mayor control sobre el formato y la colocación de los objetos a lo largo de sus documentos.
  • Puede crear sus documentos con menos código.
Mediante una plantilla, se puede ajustar la colocación de tablas, párrafos y otros objetos dentro del documento, así como incluir formato en esos objetos. Mediante la automatización, puede crear un documento nuevo basado en su plantilla con código como el siguiente:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
En la plantilla, puede definir marcadores para que el cliente de automatización puede rellenar texto variable en una ubicación específica del documento, como sigue:
oDoc.Bookmarks("MyBookmark").Range.Text = "Some Text Here"
Otra ventaja de utilizar una plantilla es que puede crear y almacenar estilos de formato que desea aplicar en tiempo de ejecución, como sigue:
oDoc.Bookmarks("MyBookmark").Range.Style = "MyStyle"
- o -
oWord.Selection.Style = "MyStyle"

Referencias

Para obtener información adicional, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
220607 cómo automatizar Microsoft Word para realizar la combinación de correspondencia desde Visual Basic
285332 cómo automatizar Word 2002 con Visual Basic para crear una combinación de correspondencia
285333 INFO: demostración de código de evento de Word 2002 MailMerge
Para obtener más información, consulte los siguientes sitios Web de Microsoft Developer Network (MSDN):
Desarrollo de Microsoft Office con Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
(c) Microsoft Corporation 2001, Reservados todos los derechos. Colaboración de Lori B. Turner, Microsoft Corporation.

Propiedades

Id. de artículo: 313193 - Última revisión: 22 ene. 2017 - Revisión: 1

Comentarios