ID do artigo: 306682 - Última revisão: sexta-feira, 29 de junho de 2007 - Revisão: 4.6

Como executar as macros do Office usando automação do Visual Basic .NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 306683  (http://support.microsoft.com/kb/306683/ ) .
Para uma versão deste artigo do Microsoft Visual C++, consulte 306686  (http://support.microsoft.com/kb/306686/ ) .

Nesta página

Expandir tudo | Recolher tudo

Sumário

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

Você pode usar a automaçã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ções

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

Criar documentos do office que contêm macros

  1. Crie um documento do Word chamado C:\Doc1.doc. Para fazer isso, execute as seguintes etapas:
    1. No Word, crie um novo documento.
    2. Pressione ALT+F11 para abrir o Editor do Visual Basic.
    3. No menu Inserir , clique em módulo .
    4. Cole o código de macro a seguir 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, salvar o documento do Word e feche o Word.
  2. Crie uma pasta de trabalho Excel chamada C:\Book1.xls usando as etapas similares àquelas que você usou para criar o documento do Word.
  3. Criar uma apresentação do PowerPoint chamada C:\Pres1.ppt usando as etapas similares àquelas que você usou para criar o Word documento.
  4. Crie um banco de dados novo do Access chamado C:\Db1.mdb. Para fazer isso, execute as seguintes etapas:
    1. No menu Inserir , clique em módulo .
    2. Cole o código de macro no novo módulo.
    3. Salve o módulo e sair do Access.

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

  1. Inicie o Microsoft Visual Studio NET.. No menu arquivo , clique em novo e, em seguida, clique em Project . Selecione Windows Application dos tipos de projetos do Visual Basic. O Form1 é criado por padrão.
  2. Adicione uma referência a bibliotecas de objetos do Access, Excel, PowerPoint e Word. Para fazer isso, execute as seguintes etapas:
    1. No menu Project , clique em Add Reference .
    2. Na guia COM , localize Microsoft Word 10.0 Object Library ou Microsoft Word 11.0 Object Library e, em seguida, clique em Selecionar .

      Observação Se você estiver usando o Microsoft Office XP e você ainda não fez isso, a Microsoft recomenda que você baixe e instale o Microsoft Office XP Primary Interop Assemblies (PIAs). Para obter mais informações sobre PIAs do Office XP, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
      328912  (http://support.microsoft.com/kb/328912/ ) Microsoft Office XP módulos de interoperabilidade primários (PIAs) estão disponíveis para download
    3. Repita a etapa anterior para bibliotecas de objetos do Access, Excel e PowerPoint.
    4. Clique em OK na caixa de diálogo Add References para aceitar as seleções. Se você receber uma solicitação para gerar wrappers para as bibliotecas que você selecionou, clique em Sim .

      Observação Se você receber uma mensagem de erro quando você faz referência o Access 10.0 objeto biblioteca, consulte a seção "Solução de problemas".
  3. No menu Exibir , clique em caixa de ferramentas . Adicione uma caixa de combinação e um botão ao Form1.
  4. Clique duas vezes em Button1 para gerar uma definição para Click do botão manipulador 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 Exibir , clique em Designer e clique duas vezes em Form1 para gerar uma definição para o evento Load 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 à 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
    					

Executar e testar o cliente de automação

  1. Pressione F5 para executar o aplicativo.
  2. Selecione um aplicativo do Office do ComboBox1 e, em seguida, clique em Button1 . O aplicativo do Office que você selecionou é iniciado e as macros DoKBTest e DoKBTestWithParameter são executadas.

Solução de problemas

Quando você faz referência a biblioteca de objeto Access 10.0 em um projeto Visual Basic.NET, você receberá uma mensagem de erro informando que falha na conversão da biblioteca para um assembly .NET. Para obter mais informações sobre como resolver esse problema para que você com êxito pode fazer referência a biblioteca de objetos Access 10.0, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
317157  (http://support.microsoft.com/kb/317157/ ) PROBLEMA: Erros quando você faz referência a biblioteca de tipos 10.0 do Access com o Visual Studio .NET

Referências

Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
303871  (http://support.microsoft.com/kb/303871/ ) Como criar uma macro do Excel usando automação do Visual Basic .NET
177760  (http://support.microsoft.com/kb/177760/ ) ACC97: Como executar as macros em outros programas do Office
Para obter mais informações e recursos sobre o Office Automation, visite os seguintes sites:
Microsoft Office Development com Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx (http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx)

Perguntas freqüentes e destaques para o desenvolvimento do Office
http://msdn2.microsoft.com/en-us/office/default.aspx (http://msdn2.microsoft.com/en-us/office/default.aspx)

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áticaTraduçã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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 306682  (http://support.microsoft.com/kb/306682/en-us/ )