Partilhar via


Como obter os nomes das macros de um livro do Excel utilizando o Visual Basic 6.0

Resumo

Este artigo passo a passo descreve como utilizar o Visual Basic 6.0 para obter os nomes das macros de um livro do Excel.

Requisitos

Os seguintes itens descrevem o hardware, software, infraestrutura de rede, competências e conhecimentos e service packs recomendados de que precisa:

  • Excel 2000, Excel 2002, Office Excel 2003 ou Office Excel 2007
  • Macros do Excel
  • Visual Basic for Applications

Criar um livro do Excel com duas macros

  1. Inicie o Excel. É criado um novo livro em branco.

  2. Prima Alt+F11 para iniciar o Visual Basic Editor.

  3. No Explorador de Projeto, faça duplo clique em EsteLivro para iniciar o editor de código.

  4. Colar o seguinte código para duas macros simples no editor de código:

    Option Explicit
    
    Sub Macro_A()
        MsgBox "This is Macro A"
    End Sub
    
    Sub Macro_B()
        MsgBox "This is Macro B"
    End Sub
    
  5. Feche o Visual Basic Editor e regresse à vista de livros.

  6. No Excel 2003 e em versões anteriores do Excel, guarde o livro como C:\Abc.xls.

    No Excel 2007, guarde o livro como um livro com macros ativadas para macros denominado C:\Abc.xlsm.

  7. Feche o livro e saia do Excel.

Criar uma aplicação do Visual Basic para listar as macros no livro

  1. No Visual Basic 6.0, crie um novo projeto EXE Padrão.

  2. No menu Projeto , clique em Referências. Na caixa de diálogo Referências , selecione as seguintes referências:

    • Microsoft Visual Basic for Applications Extensibilidade 5.3
    • Para o Microsoft Excel 2000: Biblioteca de Objetos do Microsoft Excel 9.0
    • Para o Microsoft Excel 2002: Biblioteca de Objetos do Microsoft Excel 10.0
    • Para o Microsoft Office Excel 2003: Biblioteca de Objetos do Microsoft Excel 11.0
    • Para o Microsoft Office Excel 2007: Biblioteca de Objetos do Microsoft Excel 12.0
  3. Clique em OK.

  4. Adicionar um botão ao formulário. O botão tem o nome predefinido Comando1.

  5. Adicionar uma caixa de listagem ao formulário. A caixa de listagem tem o nome predefinido Lista1.

  6. Defina um procedimento de alça de evento para o botão. Utilize o seguinte código para este procedimento para apresentar as informações sobre as macros definidas no C:\Abc.xls:

    Private Sub Command1_Click()
        ' Declare variables to access the Excel workbook.
        Dim objXLApp As Excel.Application
        Dim objXLWorkbooks As Excel.Workbooks
        Dim objXLABC As Excel.Workbook
    
    ' Declare variables to access the macros in the workbook.
        Dim objProject As VBIDE.VBProject
        Dim objComponent As VBIDE.VBComponent
        Dim objCode As VBIDE.CodeModule
    
    ' Declare other miscellaneous variables.
        Dim iLine As Integer
        Dim sProcName As String
        Dim pk As vbext_ProcKind
    
    ' Open Excel, and open the workbook.
        Set objXLApp = New Excel.Application
        Set objXLWorkbooks = objXLApp.Workbooks    
        Set objXLABC = objXLWorkbooks.Open("C:\ABC.XLS")
    
    ' Empty the list box.
        List1.Clear
    
    ' Get the project details in the workbook.
        Set objProject = objXLABC.VBProject
    
    ' Iterate through each component in the project.
        For Each objComponent In objProject.VBComponents
    
    ' Find the code module for the project.
            Set objCode = objComponent.CodeModule
    
    ' Scan through the code module, looking for procedures.
            iLine = 1
            Do While iLine < objCode.CountOfLines
                sProcName = objCode.ProcOfLine(iLine, pk)
                If sProcName <> "" Then
                    ' Found a procedure. Display its details, and then skip 
                    ' to the end of the procedure.
                    List1.AddItem objComponent.Name & vbTab & sProcName
                    iLine = iLine + objCode.ProcCountLines(sProcName, pk)
                Else
                    ' This line has no procedure, so go to the next line.
                    iLine = iLine + 1
                End If
            Loop
            Set objCode = Nothing
            Set objComponent = Nothing
        Next
    
    Set objProject = Nothing
    
    ' Clean up and exit.
        objXLABC.Close
        objXLApp.Quit
    End Sub
    
    

Testar a amostra

  1. Criar e executar a aplicação.
  2. Clique no botão de comando. A caixa de listagem apresenta os nomes de todas as macros e o livro que as contém, da seguinte forma: EsteLivro Macro_A EsteLivro Macro_B

Resolução de Problemas

Devido às disposições de segurança melhoradas no Excel 2002, Excel 2003 e Excel 2007, poderá receber a seguinte mensagem de erro do programa Visual Basic quando utilizar o Excel 2002, o Excel 2003 ou o Excel 2007: O acesso programático ao Visual Basic Project não é fidedijado.

Para obter mais informações sobre este problema e como resolvê-lo, clique no número de artigo seguinte para ver o artigo na Base de Dados de Conhecimento Microsoft:

282830 PRB: o acesso programático ao projeto VBA do Office XP não é negado

Referências

Para obter mais informações, consulte o seguinte site do Microsoft Developer Network (MSDN):

Desenvolvimento do Microsoft Office com Visual Studio

Para obter mais informações, consulte os seguintes artigos da Base de Dados de Conhecimento:

219905 Como adicionar e executar dinamicamente uma macro VBA a partir do Visual Basic