Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
Inicie o Excel. É criado um novo livro em branco.
Prima Alt+F11 para iniciar o Visual Basic Editor.
No Explorador de Projeto, faça duplo clique em EsteLivro para iniciar o editor de código.
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
Feche o Visual Basic Editor e regresse à vista de livros.
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.
Feche o livro e saia do Excel.
Criar uma aplicação do Visual Basic para listar as macros no livro
No Visual Basic 6.0, crie um novo projeto EXE Padrão.
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
Clique em OK.
Adicionar um botão ao formulário. O botão tem o nome predefinido Comando1.
Adicionar uma caixa de listagem ao formulário. A caixa de listagem tem o nome predefinido Lista1.
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
- Criar e executar a aplicação.
- 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