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

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de Abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Aprenda o que isto significa para si e como pode ficar protegido.

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
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
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.
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.NameEnd Sub'Display a message box with the string passed from the'Automation client.Public Sub DoKbTestWithParameter( sMsg As String )   MsgBox sMsgEnd 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 = NothingEnd SelectGC.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.AccessImports Excel = Microsoft.Office.Interop.ExcelImports Word = Microsoft.Office.Interop.WordImports 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

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 306682 - Última Revisão: 12/06/2015 05:05:48 - Revisão: 4.6

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

  • kbnosurvey kbarchive kbmt kbautomation kbhowto KB306682 KbMtpt
Comentários