Excel - Activar los codepane

 
Vista:

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

RE:Activar los codepane

Publicado por JuanC (1237 intervenciones) el 16/03/2010 01:01:27
te dejo una rutina que hice hace bastante... por ahí te sirve
es para recuperar el código completo de un módulo específico...

Function GetCode(ByVal sModuleName As String) As String
Dim oVBC As Object
Dim Wb As Workbook

For Each Wb In Workbooks
For Each oVBC In Workbooks(Wb.Name).VBProject.VBComponents
If Workbooks(Wb.Name).VBProject.Protection = vbext_pp_none Then
If oVBC.Type = vbext_ct_StdModule Then
If LCase(oVBC.Name) = LCase(sModuleName) Then
'//bla bla bla
End If
End If
End If
Next
Next
fin:
Set oVBC = Nothing
Set Wb = Nothing
End Function

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar