Este artigo passo a passo descreve como criar um novo documento no Word utilizando a automatização do Visual Basic. NET.
Exemplo de código
O código de exemplo neste artigo demonstra como efectuar o seguinte:
- Inserir parágrafos com texto e formatação.
- Procurar e modificar vários intervalos num documento.
- Inserir tabelas, formatar tabelas e Povoe as tabelas com dados.
- Adicione um gráfico.
Para criar um novo documento do Word utilizando 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 projecto . Em tipos de projecto clique em Projectos do Visual Basic e clique em Windows Application em Templates . É criado o Form1 por predefinição.
- Adicione uma referência para o Microsoft Word Object Library . Para o fazer, siga estes passos:
- No menu projecto , clique em Add Reference .
- No separador COM , localizar a Biblioteca de objectos do Microsoft Word e clique em Seleccionar .
Nota Microsoft Office 2003 e versões posteriores do Office incluem Primary Interop Assemblies (PIAs). Microsoft Office XP não inclui PIAs, mas pode ser transferidos. Para obter mais informações sobre PIAs do Office XP, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base: 328912
(http://support.microsoft.com/kb/328912/
)
Microsoft Office XP principais interop assemblies (PIAs) estão disponíveis para transferência
- Clique em OK na caixa de diálogo Adicionar referências para aceitar as selecções. Se receber um pedido para gerar wrappers para as bibliotecas que seleccionou, clique em Sim .
- No menu Ver , seleccione a caixa de ferramentas para visualizar a caixa de ferramentas e, em seguida, adicione um botão ao Form1.
- Faça duplo clique em Button1 . Aparece a janela código para o 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 para a parte superior do Form1.VB:
Imports Word = Microsoft.Office.Interop.Word
- Prima F5 para compilar e executar o programa.
Depois de concluído o código, examine o documento que é criado. O documento contém duas páginas de parágrafos formatados, tabelas e um gráfico.
Utilizar um modelo
Se estiver usando automatização para criar documentos que estão num formato comum, pode beneficiar de iniciar o processo com um novo documento baseado num modelo pré-formatado. Utilizando um modelo com o cliente de automatização do Word tem duas vantagens significativas através da criação de um documento a partir do nada:
- Pode ter maior controlo sobre a formatação e posição de objectos ao longo de documentos.
- Pode criar os seus documentos com menos código.
Utilizando um modelo, pode ajustar o posicionamento de tabelas, parágrafos e outros objectos no documento, bem como incluir formatação esses objectos. Ao utilizar a automatização, pode criar um documento novo baseado no modelo com o código, tal como o seguinte:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
no modelo, pode definir marcadores para que a automatização de cliente pode introduza o texto variável numa localização específica no documento, como se segue:
oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here" outra vantagem utilizando um modelo consiste que pode criar e armazenar estilos de formatação que deseja aplicar durante o tempo de execução, da seguinte forma:
oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle" - ou -
oWord.Selection.Style = "MyStyle"
Para obter mais informações sobre como utilizar Visual Basic .NET para automatizar o Microsoft Word, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
301656
(http://support.microsoft.com/kb/301656/
)
Como automatizar o Word para efectuar uma impressão em série a partir do Visual Basic .NET
Para mais informações, consulte os seguintes Web sites da Microsoft Developer Network (MSDN):