Cómo automatizar Word desde Visual Basic .NET para crear un nuevo documento

Para una versión de Microsoft Visual C# .NET de este artículo, consulte 316384 .

Para obtener una versión de Microsoft Visual Basic 6.0 de este artículo, consulte 313193 .

Resumen

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

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 .NET, siga estos pasos:
  1. Inicie Microsoft Visual Studio. NET. En el menú archivo , haga clic en nuevo y, a continuación, haga clic en proyecto. En tipos de proyecto haga clic en Proyectos de Visual Basic y luego en Aplicación para Windows en plantillas. Se creará Form1 de forma predeterminada.
  2. Agregue una referencia a la Biblioteca de objetos de Microsoft Word. Para ello, siga estos pasos:
    1. En el menú proyecto , haga clic en Agregar referencia.
    2. En la ficha COM , busque la Biblioteca de objetos de Microsoft Word y haga clic en Seleccionar.

      Nota: Microsoft Office 2003 y versiones posteriores de Office incluyen a los ensamblados de interoperabilidad primaria (PIA). Microsoft Office XP no incluye PIA, pero se pueden descargar.
      Para obtener más información acerca de los PIA de Office XP, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

      328912 ensamblados de interoperabilidad primarios (PIA) de Microsoft Office XP están disponibles para descarga

    3. Haga clic en Aceptar en el cuadro de diálogo Agregar referencias para aceptar sus selecciones. Si recibe un mensaje para generar contenedores para las bibliotecas seleccionadas, haga clic en .
  3. En el menú Ver , seleccione cuadro de herramientas para mostrar el cuadro de herramientas y, a continuación, agregue un botón a Form1.
  4. Haga doble clic en Button1. Aparecerá la ventana de código para el formulario.
  5. En la ventana de código, reemplace el código siguiente
        Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.Click

    End Sub
    con:
        Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.Click

    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.
    oWord = CreateObject("Word.Application")
    oWord.Visible = True
    oDoc = oWord.Documents.Add

    'Insert a paragraph at the beginning of the document.
    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.
    oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
    oPara2.Range.Text = "Heading 2"
    oPara2.Format.SpaceAfter = 6
    oPara2.Range.InsertParagraphAfter()

    'Insert another paragraph.
    oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\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 and italic.
    Dim r As Integer, c As Integer
    oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\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.Item(1).Range.Font.Bold = True
    oTable.Rows.Item(1).Range.Font.Italic = True

    'Add some text after the table.
    'oTable.Range.InsertParagraphAfter()
    oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\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.
    oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\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.Item(1).Width = oWord.InchesToPoints(2) 'Change width of columns 1 & 2
    oTable.Columns.Item(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.Item("\endofdoc").Range.InsertParagraphAfter()
    Do
    oRng = oDoc.Bookmarks.Item("\endofdoc").Range
    oRng.ParagraphFormat.SpaceAfter = 6
    oRng.InsertAfter("A line of text")
    oRng.InsertParagraphAfter()
    Loop While Pos >= oRng.Information(Word.WdInformation.wdVerticalPositionRelativeToPage)
    oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
    oRng.InsertBreak(Word.WdBreakType.wdPageBreak)
    oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
    oRng.InsertAfter("We're now on page 2. Here's my chart:")
    oRng.InsertParagraphAfter()

    'Insert a chart and change the chart.
    oShape = oDoc.Bookmarks.Item("\endofdoc").Range.InlineShapes.AddOLEObject( _
    ClassType:="MSGraph.Chart.8", FileName _
    :="", LinkToFile:=False, DisplayAsIcon:=False)
    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.
    oRng = oDoc.Bookmarks.Item("\endofdoc").Range
    oRng.InsertParagraphAfter()
    oRng.InsertAfter("THE END.")

    'All done. Close this form.
    Me.Close()

    End Sub
  6. Agregue el código siguiente al principio de Form1.vb:
    Imports Word = Microsoft.Office.Interop.Word
  7. Presione F5 para generar y ejecutar el programa.
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.Item("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.Item("MyBookmark").Range.Style = "MyStyle"
- o -
oWord.Selection.Style = "MyStyle"

Referencias

Para obtener más información sobre cómo utilizar Visual Basic .NET para automatizar Microsoft Word, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

301656 cómo automatizar Word para que realice una combinación de correspondencia desde Visual Basic .NET

Para obtener más información, consulte los siguientes sitios Web de Microsoft Developer Network (MSDN):
Propiedades

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

Comentarios