como eliminar macros

17/08/2009 - 09:08 por José Rafael | Informe spam
Me gustaría obtener una rutina de código para eliminar macros de un libro y
así poder archivar una hoja "plana" del mismo.
El código que pongo no me funciona.


'Borra las macros

Set Modulos = ActiveWorkbook.VBProject.VBComponents
For Each Modulo In Modulos
Select Case Modulo.Type
Case VBExt_ct_StdModule, VBExt_ct_MSForm, _
VBExt_ct_ClassModule
Modulos.Remove Modulo
Case Else
With Modulo.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
Set Modulos = Nothing

Preguntas similare

Leer las respuestas

#1 José Rafael
17/08/2009 - 11:56 | Informe spam
perdón, me faltaba comunicar los Dim:

Dim Modulo As VBIDE.VBComponent, _
Modulos As VBIDE.VBComponents

saludos


"José Rafael" escribió en el mensaje
news:
Me gustaría obtener una rutina de código para eliminar macros de un libro
y así poder archivar una hoja "plana" del mismo.
El código que pongo no me funciona.


'Borra las macros

Set Modulos = ActiveWorkbook.VBProject.VBComponents
For Each Modulo In Modulos
Select Case Modulo.Type
Case VBExt_ct_StdModule, VBExt_ct_MSForm, _
VBExt_ct_ClassModule
Modulos.Remove Modulo
Case Else
With Modulo.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
Set Modulos = Nothing

Respuesta Responder a este mensaje
#2 David
17/08/2009 - 18:58 | Informe spam
Hola, José Rafael.

Muy interesante tu post. Te doy algunas ideas:

Primero,
No agregues este código al libro al cual deseas "limpiar" de código, pues se
eliminaría a sí mismo, y podría generar conflictos. Te sugeriría crear un
libro aparte, y en el código del mismo puedes usar la instrucción:

Application.Dialogs(xlDialogOpen).Show

para abrir el archivo que necesitas limpiar.


Segundo,
No puedes eliminar los módulos de los objetos de Excel (ThisWorkbook,
Sheet1, etc.), pero sí puedes eliminar todas sus líneas. Considera algo como
lo siguiente:

if modulo.type = 100 then 'Tipo de los módulos de los objetos
Microsoft Excel
modulo.codemodule.deletelines _
startline:=1, _
count:=modulo.codemodule.countoflines
end if

Tercero,
para los otros tipos de módulo, creo que estás usando mal el método Remove.
Prueba con algo como:

modulos.remove modulos(modulo.name)

Esperamos tus comentarios para saber cómo te fue (espero que bien) y ver si
podemos apoyarte en algo más.

Saludos cordiales...



"José Rafael" escribió:

perdón, me faltaba comunicar los Dim:

Dim Modulo As VBIDE.VBComponent, _
Modulos As VBIDE.VBComponents

saludos


"José Rafael" escribió en el mensaje
news:
> Me gustaría obtener una rutina de código para eliminar macros de un libro
> y así poder archivar una hoja "plana" del mismo.
> El código que pongo no me funciona.
>
>
> 'Borra las macros
>
> Set Modulos = ActiveWorkbook.VBProject.VBComponents
> For Each Modulo In Modulos
> Select Case Modulo.Type
> Case VBExt_ct_StdModule, VBExt_ct_MSForm, _
> VBExt_ct_ClassModule
> Modulos.Remove Modulo
> Case Else
> With Modulo.CodeModule
> .DeleteLines 1, .CountOfLines
> End With
> End Select
> Next
> Set Modulos = Nothing
>



Respuesta Responder a este mensaje
#3 Rafa
19/08/2009 - 12:06 | Informe spam
Hola David, gracias por tu atención, pero no soy muy "ducho" en VBA y no
entiendo bien como proceder con tus instrucciones. Lo que necesitaría es una
rutina completa de borrado de modulos para incluirla en el codigo que tengo
con el que "extraigo" una copia de una hoja de un libro pero que no queda
plana sino que se queda con una copia de todos los modulos del libro y por
eso necesito borrarlos para archivar dicha copia.
Gracias por tu ayuda.

Saludos

Jose Rafael

"David" escribió en el mensaje
news:
Hola, José Rafael.

Muy interesante tu post. Te doy algunas ideas:

Primero,
No agregues este código al libro al cual deseas "limpiar" de código, pues


se
eliminaría a sí mismo, y podría generar conflictos. Te sugeriría crear un
libro aparte, y en el código del mismo puedes usar la instrucción:

Application.Dialogs(xlDialogOpen).Show

para abrir el archivo que necesitas limpiar.


Segundo,
No puedes eliminar los módulos de los objetos de Excel (ThisWorkbook,
Sheet1, etc.), pero sí puedes eliminar todas sus líneas. Considera algo


como
lo siguiente:

if modulo.type = 100 then 'Tipo de los módulos de los objetos
Microsoft Excel
modulo.codemodule.deletelines _
startline:=1, _
count:=modulo.codemodule.countoflines
end if

Tercero,
para los otros tipos de módulo, creo que estás usando mal el método


Remove.
Prueba con algo como:

modulos.remove modulos(modulo.name)

Esperamos tus comentarios para saber cómo te fue (espero que bien) y ver


si
podemos apoyarte en algo más.

Saludos cordiales...



"José Rafael" escribió:

> perdón, me faltaba comunicar los Dim:
>
> Dim Modulo As VBIDE.VBComponent, _
> Modulos As VBIDE.VBComponents
>
> saludos
>
>
> "José Rafael" escribió en el mensaje
> news:
> > Me gustaría obtener una rutina de código para eliminar macros de un


libro
> > y así poder archivar una hoja "plana" del mismo.
> > El código que pongo no me funciona.
> >
> >
> > 'Borra las macros
> >
> > Set Modulos = ActiveWorkbook.VBProject.VBComponents
> > For Each Modulo In Modulos
> > Select Case Modulo.Type
> > Case VBExt_ct_StdModule, VBExt_ct_MSForm, _
> > VBExt_ct_ClassModule
> > Modulos.Remove Modulo
> > Case Else
> > With Modulo.CodeModule
> > .DeleteLines 1, .CountOfLines
> > End With
> > End Select
> > Next
> > Set Modulos = Nothing
> >
>
>
>
Respuesta Responder a este mensaje
#4 José Rafael
22/08/2009 - 22:37 | Informe spam
Hola David:
¿Me puedes ayudar?
saludos.
José Rafael


"Rafa" escribió en el mensaje
news:%
Hola David, gracias por tu atención, pero no soy muy "ducho" en VBA y no
entiendo bien como proceder con tus instrucciones. Lo que necesitaría es
una
rutina completa de borrado de modulos para incluirla en el codigo que
tengo
con el que "extraigo" una copia de una hoja de un libro pero que no queda
plana sino que se queda con una copia de todos los modulos del libro y por
eso necesito borrarlos para archivar dicha copia.
Gracias por tu ayuda.

Saludos

Jose Rafael

"David" escribió en el mensaje
news:
Hola, José Rafael.

Muy interesante tu post. Te doy algunas ideas:

Primero,
No agregues este código al libro al cual deseas "limpiar" de código, pues


se
eliminaría a sí mismo, y podría generar conflictos. Te sugeriría crear
un
libro aparte, y en el código del mismo puedes usar la instrucción:

Application.Dialogs(xlDialogOpen).Show

para abrir el archivo que necesitas limpiar.


Segundo,
No puedes eliminar los módulos de los objetos de Excel (ThisWorkbook,
Sheet1, etc.), pero sí puedes eliminar todas sus líneas. Considera algo


como
lo siguiente:

if modulo.type = 100 then 'Tipo de los módulos de los objetos
Microsoft Excel
modulo.codemodule.deletelines _
startline:=1, _
count:=modulo.codemodule.countoflines
end if

Tercero,
para los otros tipos de módulo, creo que estás usando mal el método


Remove.
Prueba con algo como:

modulos.remove modulos(modulo.name)

Esperamos tus comentarios para saber cómo te fue (espero que bien) y ver


si
podemos apoyarte en algo más.

Saludos cordiales...



"José Rafael" escribió:

> perdón, me faltaba comunicar los Dim:
>
> Dim Modulo As VBIDE.VBComponent, _
> Modulos As VBIDE.VBComponents
>
> saludos
>
>
> "José Rafael" escribió en el mensaje
> news:
> > Me gustaría obtener una rutina de código para eliminar macros de un


libro
> > y así poder archivar una hoja "plana" del mismo.
> > El código que pongo no me funciona.
> >
> >
> > 'Borra las macros
> >
> > Set Modulos = ActiveWorkbook.VBProject.VBComponents
> > For Each Modulo In Modulos
> > Select Case Modulo.Type
> > Case VBExt_ct_StdModule, VBExt_ct_MSForm, _
> > VBExt_ct_ClassModule
> > Modulos.Remove Modulo
> > Case Else
> > With Modulo.CodeModule
> > .DeleteLines 1, .CountOfLines
> > End With
> > End Select
> > Next
> > Set Modulos = Nothing
> >
>
>
>




Respuesta Responder a este mensaje
#5 Héctor Miguel
23/08/2009 - 06:05 | Informe spam
hola, José Rafael !

... necesitaria... una rutina completa de borrado de modulos para incluirla en el codigo que tengo
con el que "extraigo" una copia de una hoja de un libro pero que no queda plana sino que
se queda con una copia de todos los modulos del libro y por eso necesito borrarlos para archivar dicha copia.



1) como es el codigo con el que "extraes" una COPIA de una hoja de un libro ?
2) cuales son "todos los modulos del libro" con los que dicha COPIA (de una hoja) "se queda" ?

(en teroria:) si solo copias una hoja (de un libro a otro) y ese hoja tiene codigo en "su modulo"...
solo necesitas eliminar/borrar/... el codigo de esa hoja EN EL LIBRO a donde la has copiado (?)

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida