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

Responder
germansovero
Miembro Nuevo
Miembro Nuevo
Mensajes: 2
Registrado: 27 Sep 2013 22:02

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

Mensaje por 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?



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

Mensaje por 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...



aescobar68
Miembro Frecuente
Miembro Frecuente
Mensajes: 6
Registrado: 13 Nov 2011 09:36

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

Mensaje por 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



Responder