Eliminar macros en distintos archivos.

06/03/2006 - 17:21 por Roberto Checa | Informe spam
Saludos, grupo.

Tengo una carpeta que contiene varios (bastantes) archivos .xls
Desearía eliminar todas las macros que contienen todos esos archivos sin
necesidad de tener que abrirlos uno por uno, no importa si ha de ser desde
otro xls, pero a ser posible usando código.

Gracias por vuestro tiempo y vuestra ayuda.

Saludos desde Zaragoza-España.
 

Leer las respuestas

#1 Héctor Miguel
07/03/2006 - 06:36 | Informe spam
hola, Roberto !

Tengo una carpeta que contiene varios (bastantes) archivos .xls
Desearia eliminar todas las macros que contienen todos esos archivos sin necesidad de tener que abrirlos uno por uno
no importa si ha de ser desde otro xls, pero a ser posible usando codigo...



el manejo de 'codigo×codigo' [modificar/agregar/eliminar - lineas/modulos] requiere:
-> establecer una referencia [en vba] a la libreria -> Microsoft Visual Basic for Applications Extensibility
la version de la libreria 'depende' de la version [de excel] donde se ha de utilizar [p.e.]
1) en excel 97 => NO DEBE tener numero de version.
2) en excel 2K => debiera funcionar 'sin problemas'
3) en excel XP/2003 => REQUIERE [ademas] de un 'ajuste' [en caso de no tenerlo ya] a las 'fuentes de confianza'
el ajuste es en: [menu] herramientas/macros/seguridad/[pesta#a] fuentes de confianza y ...
poner una marca en: 'confiar en el acceso a proyectos de visual basic'

va un ejemplo en seguida, si cualquier duda... comentas?
saludos,
hector.

en un modulo de codigo 'normal' ==Sub Abre_Borra_Codigos()
Application.ScreenUpdating = False
Dim BuscarDonde As String, Sig As Byte
Dim Modulo As VBIDE.VBComponent, Modulos As VBIDE.VBComponents
' en la siguiente linea ESPECIFICA el directorio donde quieres 'buscarlos' '
BuscarDonde = "c:uta y\sub-carpeta donde estan\los archivos\" ' NO olvides al final el ->\<- '
With Application.FileSearch
.NewSearch
.LookIn = BuscarDonde
.SearchSubFolders = False
.FileType = msoFileTypeExcelWorkbooks
If Not .Execute() > 0 Then MsgBox "No existen documentos en " & BuscarDonde: Exit Sub
For Sig = 1 To .FoundFiles.Count
Workbooks.Open .FoundFiles(Sig)
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
ActiveWorkbook.Close True
Next
End With
Set Modulos = Nothing
End Sub

Preguntas similares