Como automatizar o Word a partir do Visual Basic .NET para criar um novo documento

Traduções de Artigos Traduções de Artigos
Artigo: 316383 - Ver produtos para os quais este artigo se aplica.
Para obter uma Microsoft Visual C# .NET versão deste artigo, consulte 316384.
Para um Microsoft Visual Basic 6.0 versão deste artigo, consulte 313193.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

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:
  1. 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.
  2. Adicione uma referência para o Microsoft Word Object Library . Para o fazer, siga estes passos:
    1. No menu projecto , clique em Add Reference .
    2. 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:
      328912Microsoft Office XP principais interop assemblies (PIAs) estão disponíveis para transferência
    3. 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 .
  3. No menu Ver , seleccione a caixa de ferramentas para visualizar a caixa de ferramentas e, em seguida, adicione um botão ao Form1.
  4. Faça duplo clique em Button1 . Aparece a janela código para o formulário.
  5. 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
  6. Adicione o seguinte código para a parte superior do Form1.VB:
    Imports Word = Microsoft.Office.Interop.Word
  7. 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"

Referências

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:
301656Como 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):
Desenvolvimento do Microsoft Office com o Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

Word do Office
http://msdn2.microsoft.com/en-us/library/aa201330(office.11).aspx

Word mais um
http://msdn2.microsoft.com/en-us/library/aa201332(office.11).aspx

Propriedades

Artigo: 316383 - Última revisão: 24 de maio de 2007 - Revisão: 11.1
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
Palavras-chave: 
kbmt kbexpertiseinter kbautomation kbhowtomaster KB316383 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 316383

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com