# Reducir el tamaño del archivo



## t4373125 (Jul 10, 2002)

Me he fijado que a medida que voy grabando un archivo que tiene formularios y código VBA, este va aumentando de tamaño considerablemente, aunque los cambios sean mínimos. Por que? Hay alguna solución?

La que yo he encontrado es hacer una copia de todas las hojas, código y formularios en un libro nuevo. El archivo reduce de tamaño hasta una cuarta parte.

Alguien me puede decir algo sobre este tema?

Muchas gracias.


----------



## Juan Pablo González (Jul 10, 2002)

Si, ese ha sido un serio problema.  Aparte de la solución que pone, que es muy tediosa y cansona, lo que hago es cerrar completamente Excel, abrir nuevamente el libro o proyecto, y guardar inmediatamente el libro.  Eso me ha reducido el tamaño hasta la mitad más o menos.

Excel XP hace un poco mejor este trabajo...


----------



## FR (Aug 3, 2002)

Algo que es muy rebuscado pero te puede ayudar es:
A las celdas que ya no tiene datos que te sirvan y que se reemplazaran por datos nuevos, o son temporales, .......; las seleccionas y las eliminas(boton derecho del mouse-Eliminar), esto borra la inicializacion que hace excel en cada celda que es ocupada en algún momento(todo formato o formato condicional).

No se si fui claro o si esa era tu pregunta.

Saludos.


----------



## valedor (Aug 13, 2002)

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


----------

