Activar los codepane
Publicado por Joaquín (1 intervención) el 15/03/2010 23:40:36
Estoy intentando introducir código VBA (macros) en las hojas de un libro de Excel 2003 utilizando código VBA.
Navegando encontré en esta dirección, http://www.foro.lospillaos.es/viewtopic.php?p=6562 y adapté el siguiente código.
------------------------------------------------------------------------------------------------------------------------
Sub InsertarCodePaneEnModuloSheet(sht As String, lugar As String)
'*********************************************************************
'*"sht" debe albergar el (codepane) nombre del panel en el que se va a colocar el código
'
'*"lugar" debe especificar el fichero que contiene el código a insertar
'*********************************************************************
'variables que dimensiono para:
Dim X As Integer 'recorrer todos los paneles de código
'primero recorro todos los codepanes (paneles de código) de VBE
For X = 1 To Application.VBE.CodePanes.Count
'si el nombre de la hoja coincide con el nombre del codepane.... listo,
'ya conseguí la referencia para copiar los datos:
If sht = Application.VBE.CodePanes(X).CodeModule.Parent.Name Then
'aqui cargo el código que tengo en un archivo de texto en C:\
lugar = ThisWorkbook.Path & "\" & lugar
Application.VBE.CodePanes(X).CodeModule.AddFromFile (lugar)
' por si encontró rápido al módulo en custión, abandono el bucle, para que no siga
'recorriendo inutilmente todos los codepanes
Exit For
End If
Next
End Sub
----------------------------------------------------------------------------------------------------------------------------
Funciona perfectamente, excepto para algunas hojas que parece como si no estubieran.
Si hago un
Debug.Print "x= " & X & " .- " & Application.VBE.CodePanes(X).CodeModule.Parent.Name
Espero ver en la ventana de depuración " Inmediato " todas las hojas y módulos que contiene mi libro, pero sin embargo, algunas no salen.
Si entro en el código de cada una de ellas y le escribo aunque sea un comentario; por ejemplo,
'Comentario
cuando vuelvo a hacer del Debug.Print, ya si que me aparecen.
La conclusión que saco, es que a pesar de estar en el libro, no están todas habilitadas y al entrar en ellas es como si se habilitaran.
Evidentemente, necesito saber como habilitar todos los CodeModule, pero si tener que entrar manualmente en ellos; es decir, con alguna instrucción de código, para habilitarlos y posteriormente, con la subrutina de arriba, introducirles automáticamente (con código) el código que yo quiera.
Disculpad el tostón, pero ando un poco atascado y por eso recurro a vosotros. Agradecería que me pusiérais en la onda para resolver esta cuestión.
Un saludo.
Espero vuestras respuestas.
Navegando encontré en esta dirección, http://www.foro.lospillaos.es/viewtopic.php?p=6562 y adapté el siguiente código.
------------------------------------------------------------------------------------------------------------------------
Sub InsertarCodePaneEnModuloSheet(sht As String, lugar As String)
'*********************************************************************
'*"sht" debe albergar el (codepane) nombre del panel en el que se va a colocar el código
'
'*"lugar" debe especificar el fichero que contiene el código a insertar
'*********************************************************************
'variables que dimensiono para:
Dim X As Integer 'recorrer todos los paneles de código
'primero recorro todos los codepanes (paneles de código) de VBE
For X = 1 To Application.VBE.CodePanes.Count
'si el nombre de la hoja coincide con el nombre del codepane.... listo,
'ya conseguí la referencia para copiar los datos:
If sht = Application.VBE.CodePanes(X).CodeModule.Parent.Name Then
'aqui cargo el código que tengo en un archivo de texto en C:\
lugar = ThisWorkbook.Path & "\" & lugar
Application.VBE.CodePanes(X).CodeModule.AddFromFile (lugar)
' por si encontró rápido al módulo en custión, abandono el bucle, para que no siga
'recorriendo inutilmente todos los codepanes
Exit For
End If
Next
End Sub
----------------------------------------------------------------------------------------------------------------------------
Funciona perfectamente, excepto para algunas hojas que parece como si no estubieran.
Si hago un
Debug.Print "x= " & X & " .- " & Application.VBE.CodePanes(X).CodeModule.Parent.Name
Espero ver en la ventana de depuración " Inmediato " todas las hojas y módulos que contiene mi libro, pero sin embargo, algunas no salen.
Si entro en el código de cada una de ellas y le escribo aunque sea un comentario; por ejemplo,
'Comentario
cuando vuelvo a hacer del Debug.Print, ya si que me aparecen.
La conclusión que saco, es que a pesar de estar en el libro, no están todas habilitadas y al entrar en ellas es como si se habilitaran.
Evidentemente, necesito saber como habilitar todos los CodeModule, pero si tener que entrar manualmente en ellos; es decir, con alguna instrucción de código, para habilitarlos y posteriormente, con la subrutina de arriba, introducirles automáticamente (con código) el código que yo quiera.
Disculpad el tostón, pero ando un poco atascado y por eso recurro a vosotros. Agradecería que me pusiérais en la onda para resolver esta cuestión.
Un saludo.
Espero vuestras respuestas.
Valora esta pregunta


0