Para obter uma versão do .NET do Microsoft Visual C# deste artigo, consulte 316384.
Para obter uma versão do Microsoft Visual Basic 6.0 deste artigo, consulte 313193.
Resumo
Este artigo passo a passo descreve como criar um novo documento no Word usando Automação do Visual Basic .NET.
Código de exemplo
O código de exemplo neste artigo demonstra como fazer o seguinte:
-
Insira parágrafos com texto e formatação.
-
Navegue e modifique vários intervalos em um documento.
-
Insira tabelas, formate tabelas e preencha as tabelas com dados.
-
Adicione um gráfico.
Para criar um novo documento do Word usando Automação do Visual Basic .NET, siga estas etapas:
-
Inicie o Microsoft Visual Studio .NET. No menu Arquivo, clique em Novo e clique em Projeto. Em Tipos de projeto, clique em Projetos Do Visual Basic e clique em Aplicativo windows em Modelos. O Form1 é criado por padrão.
-
Adicione uma referência à Biblioteca de Objetos do Microsoft Word. Para fazer isso, siga estas etapas:
-
No menu Project, clique em Add Reference.
-
Na guia COM, localize a Biblioteca de Objetos do Microsoft Word e clique em Selecionar.
Observação O Microsoft Office 2003 e versões posteriores do Office incluem PIAs (assemblies de interoperabilidade primário). O Microsoft Office XP não inclui PIAs, mas podem ser baixados.
-
Clique em OK na caixa de diálogo Adicionar Referências para aceitar suas seleções. Se você receber um prompt para gerar wrappers para as bibliotecas selecionadas, clique em Sim.
-
-
No menu Exibir, selecione Caixa de Ferramentas para exibir a Caixa de Ferramentas e adicione um botão ao Form1.
-
Clique duas vezes em Botão1. A janela de código do formulário é exibida.
-
Na janela de código, substitua o código a seguir
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click End Sub
Com:
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
-
Adicione o seguinte código à parte superior do Form1.vb:
Imports Word = Microsoft.Office.Interop.Word
-
Pressione F5 para criar e executar o programa.
Após a conclusão do código, examine o documento criado para você. O documento contém duas páginas de parágrafos formatados, tabelas e um gráfico.
Usar um modelo
Se você estiver usando a Automação para criar documentos todos em um formato comum, poderá se beneficiar de iniciar o processo com um novo documento baseado em um modelo pré-formatado. Usar um modelo com seu cliente de Automação do Word tem duas vantagens significativas sobre a criação de um documento do nada:
-
Você pode ter maior controle sobre a formatação e posicionamento de objetos em todos os documentos.
-
Você pode criar seus documentos com menos código.
Usando um modelo, você pode ajustar a colocação de tabelas, parágrafos e outros objetos dentro do documento, bem como incluir a formatação nesses objetos. Usando Automação, você pode criar um novo documento com base em seu modelo com código, como o seguinte:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
Em seu modelo, você pode definir indicadores para que seu cliente de Automação possa preencher texto variável em um local específico no documento, da seguinte maneira:
oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here"
Outra vantagem para usar um modelo é que você pode criar e armazenar estilos de formatação que deseja aplicar em tempo de execução, da seguinte maneira:
oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle"
-ou-
oWord.Selection.Style = "MyStyle"
Referências
Para obter mais informações sobre como usar o Visual Basic .NET para automatizar o Microsoft Word, clique no seguinte número de artigo para exibir o artigo na Base de Dados de Conhecimento da Microsoft:
301656 Como automatizar o Word para executar uma mesclagem de email do Visual Basic .NET