6.0 Id. de artculo: 315731 - Ver los productos a los que se aplica este artculo Advertencia: Artculo de Traduccin Automtica, vea la exencin de responsabilidad. Haga clic aqu para ver en paralelo el artculo de traduccin automtica y el artculo original en ingls. Expandir todo | Contraer todo En esta pgina Resumen o Requisitos o Cree un libro de Excel con dos macros o Crear una aplicacin Visual Basic para enumerar las macros del libro o Probar el ejemplo o Solucin de problemas Referencias Propiedades Enviar comentarios Resumen En este artculo paso a paso se describe cmo utilizar Visual Basic 6.0 para recuperar los nombres de macros de un libro de Excel. Requisitos Los elementos siguientes describen el hardware, el software, la infraestructura de red, las capacidades y el conocimiento, y los Service Pack que se necesitan: Excel 2000, Excel 2002, Office Excel 2003 o en Office Excel 2007 Macros de Excel Visual Basic para aplicaciones Cree un libro de Excel con dos macros 1. Inicie Excel. Se crea un nuevo libro en blanco. 2. Presione ALT+F11 para iniciar el Editor de Visual Basic. 3. En el Explorador de proyectos, haga doble clic en ThisWorkbook para iniciar el editor de cdigo. 4. Pegue el siguiente cdigo para dos macros sencillas en el editor de cdigo: 5. Option Explicit 6. 7. Sub Macro_A() 8. MsgBox "This is Macro A" 9. End Sub 10. 11. Sub Macro_B() 12. MsgBox "This is Macro B" 13. End Sub
14. Cierre el Editor de Visual Basic y vuelva a la vista Hoja de clculo. 15. En Excel 2003 y en versiones anteriores de Excel, guarde el libro como C:\Abc.xls.
En Excel 2007, guarde el libro como libro habilitado para macros que se denomina C:\Abc.xlsm. 16. Cierre el libro y salga de Excel. Crear una aplicacin Visual Basic para enumerar las macros del libro 1. En Visual Basic 6.0, cree un EXE estndar nuevo proyecto. 2. En el men proyecto , haga clic en referencias . En el cuadro de dilogo referencias , seleccione las referencias siguientes: o Microsoft Visual Basic for Applications Extensibility 5.3 o Para Microsoft Excel 2000: Microsoft Excel 9.0 Object Library o Para Microsoft Excel 2002: Microsoft Excel 10.0 Object Library o Para Microsoft Office Excel 2003: Microsoft Excel 11.0 Object Library o Para Microsoft Office Excel 2007: Microsoft Excel 12.0 Object Library 3. Haga clic en Aceptar . 4. Agregue un botn al formulario. El botn tiene el valor predeterminado nombre Command1. 5. Agregue un cuadro de lista al formulario. El cuadro de lista tiene el nombre predeterminado List1. 6. Definir un procedimiento de controlador de evento haga clic en para el botn. Utilice el siguiente cdigo para este procedimiento, para mostrar informacin sobre las macros que se definen en C:\Abc.xls: 7. Private Sub Command1_Click() 8. ' Declare variables to access the Excel workbook. 9. Dim objXLApp As Excel.Application 10. Dim objXLWorkbooks As Excel.Workbooks 11. Dim objXLABC As Excel.Workbook 12. 13. ' Declare variables to access the macros in the workbook. 14. Dim objProject As VBIDE.VBProject 15. Dim objComponent As VBIDE.VBComponent 16. Dim objCode As VBIDE.CodeModule 17. 18. ' Declare other miscellaneous variables. 19. Dim iLine As Integer 20. Dim sProcName As String 21. Dim pk As vbext_ProcKind 22. 23. ' Open Excel, and open the workbook. 24. Set objXLApp = New Excel.Application 25. Set objXLWorkbooks = objXLApp.Workbooks 26. Set objXLABC = objXLWorkbooks.Open("C:\ABC.XLS") 27. 28. ' Empty the list box. 29. List1.Clear 30. 31. ' Get the project details in the workbook. 32. Set objProject = objXLABC.VBProject 33. 34. ' Iterate through each component in the project. 35. For Each objComponent In objProject.VBComponents 36. 37. ' Find the code module for the project. 38. Set objCode = objComponent.CodeModule 39. 40. ' Scan through the code module, looking for procedures. 41. iLine = 1 42. Do While iLine < objCode.CountOfLines 43. sProcName = objCode.ProcOfLine(iLine, pk) 44. If sProcName <> "" Then 45. ' Found a procedure. Display its details, and then skip 46. ' to the end of the procedure. 47. List1.AddItem objComponent.Name & vbTab & sProcName 48. iLine = iLine + objCode.ProcCountLines(sProcName, pk) 49. Else 50. ' This line has no procedure, so go to the next line. 51. iLine = iLine + 1 52. End If 53. Loop 54. Set objCode = Nothing 55. Set objComponent = Nothing 56. Next 57. 58. Set objProject = Nothing 59. 60. ' Clean up and exit. 61. objXLABC.Close 62. objXLApp.Quit 63. End Sub
Probar el ejemplo 1. Genere y ejecute la aplicacin. 2. Haga clic en el botn de comando. El cuadro de lista muestra los nombres de todas las macros y el libro que contiene, como sigue: 3. ThisWorkbook Macro_A 4. ThisWorkbook Macro_B
Solucin de problemas Debido de disposiciones de seguridad mejorada en Excel 2002, Excel 2003 y Excel 2007, puede aparecer el siguiente mensaje de error desde el programa de Visual Basic cuando utiliza Excel 2002, Excel 2003 o Excel 2007: Acceso mediante programacin a proyectos de Visual Basic no es de confianza. Para obtener ms informacin acerca de este problema y cmo resolverlo, haga clic en el nmero de artculo siguiente para verlo en Microsoft Knowledge Base: 282830 (http://support.microsoft.com/kb/282830/ ) PRB: Denegado el acceso mediante programacin al proyecto de VBA de Office XP Volver al principio | Enviar comentarios