Para obter uma versão .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 com a Automatização do Visual Basic .NET.
Código de exemplo
O código de exemplo neste artigo demonstra como fazer o seguinte:
-
Inserir parágrafos com texto e formatação.
-
Procurar e modificar vários intervalos num documento.
-
Insira tabelas, formate tabelas e preencha as tabelas com dados.
-
Adicionar um gráfico.
Para criar um novo documento do Word com a Automatização do Visual Basic .NET, siga estes passos:
-
Inicie o Microsoft Visual Studio .NET. No menu Ficheiro, clique em Novo e, em seguida, clique em Projeto. Em Tipos de projeto, clique em Projetos Do Visual Basic e, em seguida, clique em Aplicação do Windows em Modelos. O Formulário1 é criado por predefinição.
-
Adicione uma referência à Biblioteca de Objetos do Microsoft Word. Para tal, siga estes passos:
-
No menu Projeto, clique em Adicionar Referência.
-
No separador COM, localize a Biblioteca de Objetos do Microsoft Word e clique em Selecionar.
Tenha em atenção que o Microsoft Office 2003 e versões posteriores do Office incluem Assemblagens Interop Primárias (PIAs). O Microsoft Office XP não inclui PIAs, mas podem ser transferidos.
-
Clique em OK na caixa de diálogo Adicionar Referências para aceitar as suas seleções. Se receber um pedido para gerar wrappers para as bibliotecas que selecionou, clique em Sim.
-
-
No menu Ver, selecione Caixa de Ferramentas para apresentar a Caixa de Ferramentas e, em seguida, adicione um botão ao Formulário1.
-
Faça duplo clique em Botão1. É apresentada a janela de código do formulário.
-
Na janela de código, substitua o seguinte código
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 de Form1.vb:
Imports Word = Microsoft.Office.Interop.Word
-
Prima F5 para criar e executar o programa.
Após a conclusão do código, examine o documento que é criado para si. O documento contém duas páginas de parágrafos formatados, tabelas e um gráfico.
Utilizar um modelo
Se estiver a utilizar a Automatização para criar documentos que estão todos num formato comum, pode beneficiar de iniciar o processo com um novo documento baseado num modelo pré-formatado. A utilização de um modelo com o seu cliente de Automatização do Word tem duas vantagens significativas em relação à criação de um documento do nada:
-
Pode ter um maior controlo sobre a formatação e colocação de objetos em todos os seus documentos.
-
Pode criar os seus documentos com menos código.
Ao utilizar um modelo, pode ajustar o posicionamento de tabelas, parágrafos e outros objetos no documento, bem como incluir formatação nesses objetos. Ao utilizar a Automatização, pode criar um novo documento com base no seu modelo com código, como o seguinte:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
No seu modelo, pode definir marcadores para que o cliente de Automatização possa preencher texto variável numa localização específica no documento, da seguinte forma:
oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here"
Outra vantagem de utilizar um modelo é que pode criar e armazenar estilos de formatação que pretende aplicar no tempo de execução, da seguinte forma:
oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle"
-ou-
oWord.Selection.Style = "MyStyle"
Referências
Para obter mais informações sobre como utilizar o Visual Basic .NET para automatizar o Microsoft Word, clique no seguinte número de artigo para ver o artigo na Base de Dados de Conhecimento Microsoft:
301656 Como automatizar o Word para efetuar uma impressão em série a partir do Visual Basic .NET