Como executar macros do Office utilizando a automatização do Visual Basic .NET

Traduções de Artigos Traduções de Artigos
Artigo: 306682 - Ver produtos para os quais este artigo se aplica.
Para obter uma Microsoft Visual C# .NET versão deste artigo, consulte 306683.
Para obter uma Microsoft Visual C++ versão deste artigo, consulte 306686.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo passo a passo descreve como chamar Office macros de um cliente de automatização do Visual Basic .NET.

Pode utilizar a automatização do Microsoft Office para abrir um documento ou criar um novo documento que contém uma macro do Visual Basic for Applications (VBA) e executar a macro em tempo de execução.

Mais Informação

O cliente de automatização de exemplo seguinte manipula um servidor de automatização do Office (Access, Excel, PowerPoint ou Word) com base na selecção num formulário. Depois do cliente inicia o servidor de automatização, abre um documento e, em seguida, chama duas macros. A primeira macro, DoKbTest, não tem parâmetros e a segunda macro, DoKbTestWithParameter, demora um único parâmetro do tipo cadeia .

Criar documentos do office que contenham macros

  1. Crie um documento do Word com o nome C:\Doc1.doc. Para o fazer, siga estes passos:
    1. No Word, crie um novo documento.
    2. Prima ALT+F11 para abrir o Editor do Visual Basic.
    3. No menu Inserir , clique em módulo .
    4. Cole o seguinte código de macro no novo módulo:
      'Display a message box that displays the application name.
      Public Sub DoKbTest()
         MsgBox "Hello from " & Application.Name
      End Sub
      
      'Display a message box with the string passed from the
      'Automation client.
      Public Sub DoKbTestWithParameter( sMsg As String )
         MsgBox sMsg
      End Sub
    5. Feche o Editor do Visual Basic, guardar o documento do Word e saia do Word.
  2. Crie um livro do Excel com o nome c:\Livro1.xls utilizando passos semelhantes aos que utilizou para criar o documento do Word.
  3. Criar uma apresentação do PowerPoint com o nome C:\Pres1.ppt utilizando os passos semelhantes aos que utilizou para criar a palavra documento.
  4. Crie uma base novo de Access dados denominado C:\Db1.mdb. Para o fazer, siga estes passos:
    1. No menu Inserir , clique em módulo .
    2. Cole o código de macro no novo módulo.
    3. Guarde o módulo e saia do Access.

Criar o cliente de automatização do Visual Basic .NET

  1. Inicie o Microsoft Visual Studio NET.. No menu ficheiro , clique em Novo e, em seguida, clique em projecto . Seleccione Windows Application dos tipos de projectos do Visual Basic. É criado o Form1 por predefinição.
  2. Adicione uma referência a bibliotecas de objectos da Access, Excel, PowerPoint e Word. Para o fazer, siga estes passos:
    1. No menu projecto , clique em Add Reference .
    2. No separador COM , localize o Microsoft Word 10.0 Object Library ou Microsoft Word 11.0 Object Library e, em seguida, clique em Seleccionar .

      Nota Se estiver a utilizar Microsoft Office XP e não o tiver já feito, a Microsoft recomenda que transfira e instale o Microsoft Office XP Primary Interop Assemblies (PIAs). 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. Repita o passo anterior para bibliotecas de objectos do Access, Excel e PowerPoint.
    4. 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 .

      Nota Se receber uma mensagem de erro quando referencia o Access 10.0 biblioteca de objectos, consulte a secção "Resolução de problemas".
  3. No menu Ver , clique em caixa de ferramentas dos controlos . Adicione uma caixa de combinação e um botão ao Form1.
  4. Faça duplo clique em Button1 para gerar uma definição para clicar no botão processador de eventos.
  5. Cole o seguinte código no procedimento Button1_Click:
    Select Case ComboBox1.SelectedItem
    
        Case "Access"
    
            Dim oAccess As Access.ApplicationClass
    
            'Start Access and open the database.
            oAccess = CreateObject("Access.Application")
            oAccess.Visible = True
            oAccess.OpenCurrentDatabase("c:\db1.mdb", False)
    
            'Run the macros.
            oAccess.Run ("DoKbTest")
            oAccess.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
    
            'Clean-up: Quit Access without saving changes to the database.
            oAccess.DoCmd().Quit (Access.AcQuitOption.acQuitSaveNone)
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oAccess)
            oAccess = Nothing
    
        Case "Excel"
    
            Dim oExcel As Excel.ApplicationClass
            Dim oBook As Excel.WorkbookClass
            Dim oBooks As Excel.Workbooks
    
            'Start Excel and open the workbook.
            oExcel = CreateObject("Excel.Application")
            oExcel.Visible = True
            oBooks = oExcel.Workbooks
            oBook = oBooks.Open("c:\book1.xls")
    
            'Run the macros.
            oExcel.Run ("DoKbTest")
            oExcel.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
    
            'Clean-up: Close the workbook and quit Excel.
            oBook.Close (False)
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oBook)
            oBook = Nothing
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oBooks)
            oBooks = Nothing
            oExcel.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oExcel)
            oExcel = Nothing
    
        Case "PowerPoint"
    
            Dim oPP As PowerPoint.ApplicationClass
            Dim oPresSet As PowerPoint.Presentations
            Dim oPres As PowerPoint.PresentationClass
    
            'Start PowerPoint and open the presentation.
            oPP = CreateObject("PowerPoint.Application")
            oPP.Visible = True
            oPresSet = oPP.Presentations
            oPres = oPresSet.Open("c:\pres1.ppt", , , True)
    
            'Run the macros.
            oPP.Run ("'pres1.ppt'!DoKbTest")
            oPP.Run("'pres1.ppt'!DoKbTestWithParameter", "Hello from VB .NET Client")
    
            'Clean-up: Close the presentation and quit PowerPoint.
            oPres.Close()
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oPres)
            oPres = Nothing
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oPresSet)
            oPresSet = Nothing
            oPP.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oPP)
            oPP = Nothing
    
        Case "Word"
    
            Dim oWord As Word.ApplicationClass
    
            'Start Word and open the document.
            oWord = CreateObject("Word.Application")
            oWord.Visible = True
            oWord.Documents.Open ("C:\Doc1.doc")
    
            'Run the macros.
            oWord.Run ("DoKbTest")
            oWord.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
    
            'Quit Word.
            oWord.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject (oWord)
            oWord = Nothing
    
    End Select
    
    GC.Collect() 
  6. No menu Ver , clique em Designer e faça duplo clique em Form1 para gerar uma definição de evento de carregamento do formulário.
  7. Cole o seguinte código no procedimento Form1_Load:
            ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
            Dim a As String() = {"Access", "Excel", "PowerPoint", "Word"}
            ComboBox1.Items.AddRange(a)
            ComboBox1.SelectedIndex = 0
    					
  8. Adicione o seguinte código para a parte superior do Form1.VB:
    Imports Access = Microsoft.Office.Interop.Access
    Imports Excel = Microsoft.Office.Interop.Excel
    Imports Word = Microsoft.Office.Interop.Word
    Imports PowerPoint = Microsoft.Office.Interop.PowerPoint
    					

Execute e teste o cliente de automatização

  1. Prima F5 para executar a aplicação.
  2. Seleccione uma aplicação do Office ComboBox1 e, em seguida, clique em Button1 . A aplicação do Office que seleccionou é iniciada e as macros DoKBTest e DoKBTestWithParameter são executadas.

Resolução de problemas

Quando referenciar a biblioteca de objectos Access 10.0 num projecto do Visual Basic. NET, receberá uma mensagem de erro que indica que a conversão da biblioteca para uma assemblagem .NET falhou. Para obter mais informações sobre como resolver este problema, de modo que com êxito pode referenciar a biblioteca de objectos Access 10.0, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
317157PROBLEMA: Erros quando referenciar a biblioteca de tipo de Access 10.0 com o Visual Studio .NET

Referências

Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
303871Como criar uma macro do Excel utilizando a automatização do Visual Basic .NET
177760ACC97: Como executar macros noutros programas do Office
Para mais informações e recursos sobre o Office automatização, visite os seguintes Web sites da Microsoft:
Desenvolvimento do Microsoft Office com o Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

Perguntas mais frequentes e destaques para desenvolvimento Office
http://msdn2.microsoft.com/en-us/office/default.aspx

Propriedades

Artigo: 306682 - Última revisão: 29 de junho de 2007 - Revisão: 4.6
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Access 2002 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Office Access 2003
  • Microsoft Office Excel 2003
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Word 2003
Palavras-chave: 
kbmt kbautomation kbhowto KB306682 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: 306682

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