Como Automatizar o Microsoft Word utilizando o Visual Basic para criar um novo documento

Resumo

Este artigo passo a passo descreve como criar um novo documento no Word com a Automatização a partir do Visual Basic.

Código de Exemplo

O código de exemplo neste artigo demonstra como fazer o seguinte:

  • Inserir parágrafos com texto e formatação.
  • Procure e modifique vários intervalos num documento.
  • Insira tabelas, formate tabelas e preenza as tabelas com dados.
  • Adicione um gráfico.

Para criar um novo documento do Word com a Automatização a partir do Visual Basic, siga estes passos:

  1. No Visual Basic, crie um novo projeto EXE Padrão. O formulário1 é criado por predefinição.

  2. No menu Projeto , clique emReferências, clique numa das seguintes opções e, em seguida, clique em OK:

    • Para o Office Word 2007, clique em Biblioteca de Objetos do Microsoft Word 12.0.
    • Para o Word 2003, clique em Biblioteca de Objetos do Microsoft Word 11.0.
    • Para o Word 2002, clique em Biblioteca de Objetos do Microsoft Word 10.0.
    • Para o Word 2000, clique em Biblioteca de Objetos do Microsoft Word 9.0.
  3. Adicionar um controlo BotãoDe Comando ao Formulário1.

  4. Adicione o seguinte código ao evento Click para Comando1:

     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.
     Set oWord = CreateObject("Word.Application")
     oWord.Visible = True
     Set oDoc = oWord.Documents.Add
    
     'Insert a paragraph at the beginning of the document.
     Set 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.
     Set oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)
     oPara2.Range.Text = "Heading 2"
     oPara2.Format.SpaceAfter = 6
     oPara2.Range.InsertParagraphAfter
    
     'Insert another paragraph.
     Set oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\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,italic.
     Dim r As Integer, c As Integer
     Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("\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(1).Range.Font.Bold = True
     oTable.Rows(1).Range.Font.Italic = True
    
     'Add some text after the table.
     'oTable.Range.InsertParagraphAfter
     Set oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\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.
     Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("\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(1).Width = oWord.InchesToPoints(2)   'Change width of columns 1 & 2.
     oTable.Columns(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("\endofdoc").Range.InsertParagraphAfter
     Do
         Set oRng = oDoc.Bookmarks("\endofdoc").Range
         oRng.ParagraphFormat.SpaceAfter = 6
         oRng.InsertAfter "A line of text"
         oRng.InsertParagraphAfter
     Loop While Pos >= oRng.Information(wdVerticalPositionRelativeToPage)
     oRng.Collapse (wdCollapseEnd)
     oRng.InsertBreak wdPageBreak
     oRng.Collapse wdCollapseEnd
     oRng.InsertAfter "We're now on page 2. Here's my chart:"
     oRng.InsertParagraphAfter
    
     'Insert a chart and change the chart.
     Set oShape = oDoc.Bookmarks("\endofdoc").Range.InlineShapes.AddOLEObject( _
         ClassType:="MSGraph.Chart.8", FileName _
         :="", LinkToFile:=False, DisplayAsIcon:=False)
     Set 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.
     Set oRng = oDoc.Bookmarks("\endofdoc").Range
     oRng.InsertParagraphAfter
     oRng.InsertAfter "THE END."
    
     'All done. Unload this form.
     Unload Me
    
    
  5. Prima F5 para executar o programa e, em seguida, clique em Comando1.

Quando o código for concluído, examine o documento que foi 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 se começar o processo com um novo documento baseado num modelo pré-formatado. Utilizar um modelo com o seu cliente de Automatização do Word tem duas vantagens significativas em criar um documento a partir de 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 otimizar a colocação 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 baseado 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 seu cliente de Automatização possa preencher texto variável numa localização específica do documento, da seguinte forma:

oDoc.Bookmarks("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("MyBookmark").Range.Style = "MyStyle"

ou

oWord.Selection.Style = "MyStyle"

Referências

Para obter informações adicionais, clique nos números do artigo abaixo para ver os artigos na Base de Dados de Conhecimento Microsoft:

285332 Como Automatizar o Word 2002 com o Visual Basic para Criar uma Mensagem de Correio

Desenvolvimento do Microsoft Office com Visual Studio

(c) Microsoft Corporation 2001, Todos os Direitos Reservados. Contribuições de Lori B. Turner, Microsoft Corporation.