Linea 1'049,576 SIN USAR Y OCUPA ESPACIO 23MB

Linea 1'049,576 SIN USAR Y OCUPA ESPACIO 23MB

Notapor germansovero » 27 Sep 2013 22:29

Tengo un Excel en donde la barra dezplazadora vertical marca hasta la ultima celda del Excel entonces entiendo que esto está haciendo que mi Excel pese muchos mas megas de lo debido, ya que no tengo colores, no es una tabla de datos gigantes, y esta pesando casi 23MB. Como puedo hacer para que el Excel no reconosca todas esas filas que no estoy usando y la barra dezplazadora solo marque las filas que estoy usando?
germansovero
Miembro Nuevo
Miembro Nuevo
 
Mensajes: 2
Registrado: 27 Sep 2013 22:02

Re: Linea 1'049,576 SIN USAR Y OCUPA ESPACIO 23MB

Notapor Victor Luis » 01 Oct 2013 02:49

Holas...

Yo tengo libros Excel con 134 MB y al abrirlos se pone a veces lenta...

○ Bueno cuando borro filas o columnas, la barra desplazadora sigue alargada si ese es el termino.
Para esto selecciono las filas o columnas vacias y le doy con la opcion ELIMINAR. Luego Guardo Excel y el tañano queda reducido en MB.

○ Tambien elimino las hojas que no son necesarias y luego Guardo Excel.

○ Otra opcion que uso para que no ocupe tantos MB y se abra rapido, es Guardarlo como Tipo: Libro de excel 97-2003. El inconveniente es que me reduce el numero de filas y de columnas a usar.

○ Por ultimo podria decirte que trates de distribuir tus celdas en varias columnas y no llegues hasta el limite del millon y mas que dispone cada Hoja...


Bueno espero te sirva y suerte...
Victor Luis
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 348
Registrado: 27 Jun 2013 20:53

Re: Linea 1'049,576 SIN USAR Y OCUPA ESPACIO 23MB

Notapor aescobar68 » 11 Ene 2015 15:13

Buenas tardes,

Este codigo viene de este foro, pero fue tomada hace mucho y no me acuerdo quien lo creo, es muy bueno para liberar espacio, ponlo en un modulo y lo ejecutas como macro.

Código: Seleccionar todo
Sub Limpiar_rangos()
   
   
    Dim hj As Excel.Worksheet
    Dim copia$, ffin&, cfin&, TI&, TF&
   
   
    copia = crear_copia(ActiveWorkbook)
    MsgBox "Se ha creado una copia: " & vbLf & copia, vbInformation
       
       
    With ActiveWorkbook
   
        TI = VBA.FileLen(.FullName)
   
        For Each hj In .Worksheets
       
            ffin = 1
            cfin = 1
       
            With hj
           
                On Error Resume Next
                ffin = .UsedRange.Find(What:="*", _
                                       LookIn:=xlFormulas, _
                                       SearchOrder:=xlByRows, _
                                       SearchDirection:=xlPrevious).Row
                cfin = .UsedRange.Find(What:="*", _
                                       LookIn:=xlFormulas, _
                                       SearchOrder:=xlByColumns, _
                                       SearchDirection:=xlPrevious).Column
                On Error GoTo 0
               
                If .ProtectContents Then
                    If MsgBox("La hoja " & .Name & " se encuentra protegida." & vbLf & vbLf & _
                              "No se podrán limpiar los rangos de esta hoja a menos que se desproteja." _
                              & vbLf & vbLf & "¿Desea desprotegerla antes de continuar?", vbYesNo, _
                              "¡Hoja protegida!") = vbYes Then
                        If Desproteger(hj) Then
                            Limpiar hj, ffin, cfin
                        Else
                            MsgBox "No se ha desprotegido la hoja.", vbCritical, "¡Clave incorrecta!"
                        End If
                    End If
                Else
                    Limpiar hj, ffin, cfin
                End If

            End With
           
        Next hj
       
        .Save
       
        TF = VBA.FileLen(.FullName)
       
    End With
   
       
    MsgBox "Tamaño original: " & VBA.Format(TI, "#,##0") & " bytes." & vbLf & vbLf & _
           "Tamaño final: " & VBA.Format(TF, "#,##0") & " bytes." & vbLf & vbLf & _
           "El archivo se redujo en: " & VBA.Format(TI - TF, "#,##0") & " bytes" & _
           " (" & VBA.FormatPercent(Abs(TI / TF - 1), 2) & ")."
           
   
End Sub


Código: Seleccionar todo
Private Sub Limpiar(ByVal hj As Excel.Worksheet, ByVal ffin As Long, ByVal cfin As Long)

    With hj
           
        With .Range(.Cells(ffin + 1, 1), .Cells(.Rows.Count, 1)).EntireRow
            If .MergeCells = False Then .Clear
        End With
       
        With .Range(.Cells(1, cfin + 1), .Cells(1, .Columns.Count)).EntireColumn
            If .MergeCells = False Then .Clear
        End With
       
    End With
   
End Sub


Código: Seleccionar todo
Private Function crear_copia(ByVal Libro As Excel.Workbook) As String

        With Libro
            .Save
            crear_copia = .Path & Application.PathSeparator & VBA.Format(VBA.Now, "d-m-yy h-mm ") & .Name
            .SaveCopyAs crear_copia
        End With
       
End Function


Código: Seleccionar todo
Private Function Desproteger(ByVal hj As Excel.Worksheet) As Boolean
   
    On Error Resume Next
    hj.Unprotect
    Desproteger = Not VBA.CBool(Err.Number)
    On Error GoTo 0
   
End Function
aescobar68
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 6
Registrado: 13 Nov 2011 09:36


Volver a OTROS FOROS

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado