Hola Amigos soy nuevo en este foro y la verdad necesito de su ayuda.
Tengo la idea de hacer un complemeto para que haga una copia de la hoja activa en un libro nuevo "Este no es el problema"
en el libro nuevo quiero agregar una modulo con algunas rutinas "Proteger la hoja y Desproteger" o agregar una rutina al Mismo libro que genere "Este es el problema"
Digamne por favor si hay alguna forma de hacerlo
Please!!!!
para editar el código de programación desde la propia programación, debes emplear la propiedad
VBProject
del libro.dentro tienes la propiedad
VBcomponents
que representa los diferentes módulos etc que forman tu proyecto.por ejemplo, puedes utilizar
ActiveWorkbook.VBProject.VBComponents.Import "tucodigo.bas"
para importar al libro activo un módulo que tengas guardado en un archivo llamado "tucodigo.bas" (yo prefiero tener el código en un archivo diferente)Tienes distintos métodos y propiedades para añadir módulos quitarlos, etc.
si quieres escribir el código desde dentro de la macro, aquí he encontrado un ejemplo. es el primero que he visto, no sé si será muy bueno o muy malo. es para Word, así que habla de thisdocument en vez de thisworksheet, pero puede servir para tener alguna pista de cómo hacerlo http://www.vbcity.com/forums/topic.asp?tid=63305
------
Ya sé Excel, pero necesito más
La potencia sin control no sirve de nada.
agradecimientos
------
Ya sé Excel, pero necesito más.
Hola Muchas Gracias por la ayuda.
Pero tengo que decir la verdad. podrias ser mas explicito por que la verdad tengo nociones pero no soy un master como vos.
ayudame por favor.
Necesito saber Mas
yo haría lo siguiente:
en el complemento crearía un módulo con los procedimientos que quieras pasar al nuevo libro
Luego, el procedimiento que cree el nuevo libro y copie el contenido de este procedimiento tendría un aspecto como el siguiente:
Sub CopiarModuloNuevoLibro()
Const NombreMódulo = "Procedimientos" 'nombre del procedimiento, para identificarlo
Workbooks.Add 'creo un nuevo libro, que pasa a ser el activo por estar recién creado
With ActiveWorkbook.VBProject
' creo el nuevo módulo
.VBComponents.Add(vbext_ct_StdModule).CodeModule = NombreMódulo
' borro posibles líneas que se hayan escrito automaticamente al crear el módulo
' es para prevenir duplicados de Option Explicit y cosas así
.VBComponents(NombreMódulo).CodeModule.DeleteLines 1, _
.VBComponents(NombreMódulo).CodeModule.CountOfLines
' copio las líneas del código
.VBComponents(NombreMódulo).CodeModule.AddFromString _
ThisWorkbook.VBProject.VBComponents(NombreMódulo).CodeModule.Lines(1, ThisWorkbook.VBProject.VBComponents(NombreMódulo).CodeModule.CountOfLines)
End With
End Sub
pruebalo a ver qué tal y me cuentas.
------
Ya sé Excel, pero necesito más
La potencia sin control no sirve de nada.
agradecimientos
------
Ya sé Excel, pero necesito más.
Soss. un Genio.
me dio un poco de problemas al inicio, pero navegando por ahi tuve que que habilitar la Referencia de Microsoft. Visual Basic for Apllications Extensibility 5.3
y funciono de maravilla
Gracias nuevamente.
ahora me surgio otra duda como lo puedo agregar a una hoja especifica o al mismo ThisWorkBook?
Necesito saber Mas
En el editor de VBA, simplemente haz doble clic sobre la hoja o el libro donde quieras guardar el código. Esto abre a la derecha el código asociado a la hoja o al libro. En la barra de la aplicación aparece qué código estás editando.
------
Ya sé Excel, pero necesito más
La potencia sin control no sirve de nada.
agradecimientos
------
Ya sé Excel, pero necesito más.
Perdon yo me referia a correr la Macro y copiar el codigo en la hoja creada o en ThisWorkBook del libro creado.
Muchas Gracias por tu ayuda en verdad que eres un genio
Necesito saber Mas
El truco está en VBComponents. De todos los componentes del proyecto, le decimos que lo escriba en el código del libro.
por ejemplo, en este caso en que escribimos en el libro activo, para escribir un texto en el código del libro:
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule.AddFromString "'hola"
Este ThisWorkbook es un texto, no es el objeto Thisworkbook que se refiere a tu complemento, es el componente del proyecto de Visual Basic que se llama "ThisWorkbook" dentro del libro activo.
------
Ya sé Excel, pero necesito más
La potencia sin control no sirve de nada.
agradecimientos
------
Ya sé Excel, pero necesito más.
Oooohh muchas Gracias, ya entendi solo por curiosidad en el caso de querer meter una rutina algo larga la forma de dar renglon seria con (Chr(10))
Nuevamente Gracias.
Saludos!!!!!
Necesito saber Mas