Hola, prueba la siguiente macro...
El archivo a "limpiar" debe estar guardado.
Al final del proceso, en la misma carpeta donde este guardado su archivo, quedaran los archivos de todos los componentes exportados, es facil agregar un poco de codigo para borrarlos al final.
Es una macro de prueba, pruebenla sobre copias de su archivos de trabajo, puesto que modifica los archivos con codigo, no deseo que por alguna causa se pierda algo de su trabajo, que se bien cuanto cuesta
Tiene algunos detalles, espero a alguien que los mencione
Gracias y saludos<PRE>
Public Sub LimpiarLibro()
Dim Ruta1 As String, Ruta2 As String
Dim strComponentes() As String
Dim co1 As Integer
Dim Tipo As Long, Tam1 As Long, Tam2 As Long
Dim Compo As Object
Ruta1 = ActiveWorkbook.Path & ""
If Len(Ruta1) > 1 Then
Tam1 = FileLen(ActiveWorkbook.FullName)
For Each Compo In ActiveWorkbook.VBProject.VBComponents
Tipo = Compo.Type
Select Case Tipo
Case 1
Ruta2 = Ruta1 & Compo.Name & ".bas"
Case 2
Ruta2 = Ruta1 & Compo.Name & ".cls"
Case 3
Ruta2 = Ruta1 & Compo.Name & ".frm"
End Select
If Tipo > 0 And Tipo< 4 Then
ReDim Preserve strComponentes(co1)
strComponentes(co1) = Ruta2
co1 = co1 + 1
Compo.Export Ruta2
ActiveWorkbook.VBProject.VBComponents.Remove Compo
End If
Next Compo
If co1 > 0 Then
For co1 = 0 To co1 - 1
ActiveWorkbook.VBProject.VBComponents.Import strComponentes(co1)
Next co1
ActiveWorkbook.Save
Tam2 = FileLen(ActiveWorkbook.FullName)
MsgBox "Nombre del libro = " & ActiveWorkbook.Name & vbCrLf & vbCrLf & _
"Tamaño original = " & Format(Tam1 / 1024, "#,##0 KB") & vbCrLf & vbCrLf & _
"Tamaño final = " & Format(Tam2 / 1024, "#,##0 KB")
Else
MsgBox "El libro no cambio de tamaño"
End If
Else
MsgBox "El libro no esta guardado"
End If
Erase strComponentes
End Sub</PRE>
_________________
TODO LO QUE NO ES DADO ES PERDIDO
This message was edited by valedor on 2002-08-14 08:31