Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

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

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

Resumen

En este artículo paso a paso se describe cómo crear un documento en Word con Automation desde Visual Basic .NET.

Código de ejemplo

En el código de ejemplo de este artículo se muestra cómo hacer lo siguiente:

  • Insertar párrafos con texto y formato.

  • Examine y modifique varios rangos dentro de un documento.

  • Inserte tablas, aplique formato a tablas y rellene las tablas con datos.

  • Agregue un gráfico.

Para crear un nuevo documento de Word con 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, a continuación, haga clic en Aplicación de Windows en Plantillas. El formulario1 se crea 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 pestaña COM, busque la Biblioteca de objetos de Microsoft Word y haga clic en Seleccionar.

      Nota Microsoft Office 2003 y versiones posteriores de Office incluyen ensamblados de interoperabilidad primaria (PIA). Microsoft Office XP no incluye los PIAs, pero se pueden descargar.
       

    3. Haga clic en Aceptar en el cuadro de diálogo Agregar referencias para aceptar las selecciones. Si recibe un aviso para generar contenedores para las bibliotecas que seleccionó, haga clic en Sí.

  3. En el menú Ver, seleccione Cuadro de herramientas para mostrar el cuadro de herramientas y, a continuación, agregue un botón a Formulario1.

  4. Haga doble clic en Botón1. Aparecerá la ventana de código del 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 a la parte superior de Form1.vb:

    Imports Word = Microsoft.Office.Interop.Word
  7. Presione F5 para crear y ejecutar el programa.

Cuando se complete el código, examine el documento que se ha creado para usted. El documento contiene dos páginas de párrafos con formato, tablas y un gráfico.

Usar una plantilla

Si usa Automation para crear documentos que están todos en un formato común, puede beneficiarse de iniciar el proceso con un nuevo documento basado en una plantilla con formato previo. Usar una plantilla con el cliente de automatización de Word tiene dos ventajas significativas con respecto a la creación de un documento desde nada:

  • Puede tener un mayor control sobre el formato y la ubicación de los objetos en todos los documentos.

  • Puede crear documentos con menos código.

Al usar una plantilla, puede ajustar la colocación de tablas, párrafos y otros objetos dentro del documento, así como incluir formato en esos objetos. Al usar Automatización, puede crear un documento basado en la 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 pueda rellenar texto variable en una ubicación específica del documento, de la siguiente manera:

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

Otra ventaja de usar una plantilla es que puede crear y almacenar estilos de formato que desee aplicar en tiempo de ejecución, como se indica a continuación:

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

O bien

oWord.Selection.Style = "MyStyle"

Referencias

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

301656 Automatizar Word para realizar una combinación de correspondencia desde Visual Basic .NET

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×