File Size Reducer - Add-Ins làm giảm dung lượng file Excel. (3 người xem)

  • Thread starter Thread starter DOSNET
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

DOSNET

Thành viên gắn bó
Thành viên danh dự
Tham gia
3/8/07
Bài viết
1,633
Được thích
2,370
Nghề nghiệp
E&A
- Lang thang trên mạng, tình cờ tôi tìm được công cụ làm giảm dung lượng file Excel khá hay, up lên để các bạn tham khảo. Tiện ích được đóng gói thành một Add-Ins rất dễ sử dụng, tôi đã test và khá bất ngờ về tính hiệu quả của nó. Với những file làm việc lâu ngày, dung lượng file giảm đi đáng kể, dung lượng file giảm đi ít hay nhiều phụ thuộc vào từng file.
- Các bạn download về và thêm vào Add-Ins trong Excel của mình, sau khi cài đặt xong, sẽ xuất hiện tác vụ File clean trong Menu chính của Excel. Mở một file bất kỳ bạn cho là có rác, nên chọn kiểu dọn dẹp là StandardSave a Copy for me before clean để sao lưu trước khi tiến trình dọn dẹp thực hiện nhằm đảm bảo an toàn dữ liệu của bạn. Các bạn dùng và cho ý kiến nhé !
 

File đính kèm

Anh PhannhuKhang oi
Ý anh có phải là một file excell đang là 2M khi dùng add-in này còn 1 M không?
"mở một file bất kỳ mà mình cho là có rác" => ý là như nào hả anh?
Em chưa rõ lắm
 
feelingyes đã viết:
Anh PhannhuKhang oi
Ý anh có phải là một file excell đang là 2M khi dùng add-in này còn 1 M không?
"mở một file bất kỳ mà mình cho là có rác" => ý là như nào hả anh?
Em chưa rõ lắm
- Để hiểu rõ thế nào là "rác" e rằng phải hiểu rõ cấu trúc file Excel, Phải nhờ đến sự giải thích của các cao thủ. bản thân người viết Add-In hiểu được điều này dựa vào đó sẽ loại bỏ những yếu tố không cần thiết trong file (Tích lũy do quá trình sử dụng của bạn theo thời gian..V.v) Không có nghĩa là file có dung lượng 2Mb sau khi Clean, dung lượng giảm xuống còn 1Mb. Có những file sau khi bạn Clean, dung lượng không đổi vì nó đã tối ưu (không thể lược bớt gì thêm).
 
Đây là ruột của CT này Mời các bác mổ xẻ
PHP:
Option Explicit
Public wsSheet As Worksheet
Public iReply As Integer
Public rLastRow As Range
Public rlastCol As Range
Public bCalc As Boolean
Public strCleanType As String
Public bSaveCopy As Boolean
Public OldSize As String, NewSize As String
Dim strName As String
Dim fs, f, s
Sub CleanUpFull()
    On Error Resume Next
    Application.EnableEvents = False

    If bSaveCopy = True Then Run "SaveCopyAs"

    bCalc = Application.Calculation = _
            xlCalculationAutomatic
    If bCalc = True Then Application.Calculation = _
       xlCalculationManual
    For Each wsSheet In ActiveWorkbook.Worksheets
        wsSheet.ShowAllData
        With wsSheet.Cells
            .SpecialCells(xlCellTypeBlanks).Clear

            Set rLastRow = .Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, _
                                 searchOrder:=xlByRows, SearchDirection:=xlPrevious).Offset(1, 1)

            Set rlastCol = .Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, _
                                 searchOrder:=xlByColumns, SearchDirection:=xlPrevious).Offset(1, 1)

        End With

        wsSheet.Range(rLastRow.EntireRow, _
                      rLastRow.EntireRow.End(xlDown)).Clear

        wsSheet.Range(rlastCol.EntireColumn, _
                      rlastCol.EntireColumn.End(xlToRight)).Clear

        Application.CutCopyMode = False
        ActiveSheet.UsedRange
    Next wsSheet

    Application.EnableEvents = True
    If bCalc = True Then Application.Calculation = xlCalculationAutomatic

    If bSaveCopy = True Then
        ActiveWorkbook.Save
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.Getfile(ActiveWorkbook.FullName)

        NewSize = UCase(f.Name) & " uses " & f.Size & " bytes."
        MsgBox "Procedure has finished." & Chr(13) & Chr(13) & OldSize & Chr(13) & Chr(13) & NewSize & Chr(13) & Chr(13) & "If the file size has increased, your Workbook is most likely corrupt. Restart the 'File Clean' and click the 'In case of corruption click here' button.", vbInformation, "OzGrid.com"
        Run "KillVar"
        Exit Sub
    End If

    Run "KillVar"
    MsgBox "Procedure has finished, you will need to " _
         & "save and then note if the file size has reduced via File>Properties / General" _
         & Chr(13) & Chr(13) & "If the file size has increased, your Workbook is most likely corrupt. Restart the 'File Clean' and click the 'In case of corruption click here' button.", vbInformation, "OzGrid.com"

End Sub


Sub CleanUpStand()
    On Error Resume Next
    Application.EnableEvents = False

    If bSaveCopy = True Then Run "SaveCopyAs"

    bCalc = Application.Calculation = _
            xlCalculationAutomatic
    If bCalc = True Then Application.Calculation = _
       xlCalculationManual
    For Each wsSheet In ActiveWorkbook.Worksheets

        With wsSheet.Cells

            Set rLastRow = .Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, _
                                 searchOrder:=xlByRows, SearchDirection:=xlPrevious).Offset(1, 1)

            Set rlastCol = .Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, _
                                 searchOrder:=xlByColumns, SearchDirection:=xlPrevious).Offset(1, 1)

        End With

        wsSheet.Range(rLastRow.EntireRow, _
                      rLastRow.EntireRow.End(xlDown)).Clear

        wsSheet.Range(rlastCol.EntireColumn, _
                      rlastCol.EntireColumn.End(xlToRight)).Clear

        Application.CutCopyMode = False
        ActiveSheet.UsedRange

    Next wsSheet
    Application.EnableEvents = True

    If bCalc = True Then Application.Calculation = xlCalculationAutomatic

    If bSaveCopy = True Then
        ActiveWorkbook.Save
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.Getfile(ActiveWorkbook.FullName)

        NewSize = UCase(f.Name) & " uses " & f.Size & " bytes."
        MsgBox "Procedure has finished." & Chr(13) & Chr(13) & OldSize & Chr(13) & Chr(13) & NewSize & Chr(13) & Chr(13) & "If the file size has increased, your Workbook is most likely corrupt. Restart the 'File Clean' and click the 'In case of corruption click here' button.", vbInformation, "OzGrid.com"
        Run "KillVar"
        Exit Sub
    End If

    Run "KillVar"
    MsgBox "Procedure has finished, you will need to " _
         & "save and then note if the file size has reduced via File>Properties / General" & Chr(13) & Chr(13) & "If the file size has increased, your Workbook is most likely corrupt. Restart the 'File Clean' and click the 'In case of corruption click here' button.", vbInformation, "OzGrid.com"
End Sub

Sub SaveCopyAs()
    On Error Resume Next
    strName = "CopyOf" & ActiveWorkbook.Name
    ActiveWorkbook.SaveAs strName
End Sub

Sub CleanFormShow()
    On Error Resume Next
    UserForm1.Show
End Sub

Sub KillVar()
    On Error Resume Next
    Set wsSheet = Nothing
    iReply = 0
    Set rLastRow = Nothing
    Set rlastCol = Nothing
    bCalc = False
    strCleanType = ""
    bSaveCopy = False
    OldSize = ""
    NewSize = ""
    strName = ""
    Set fs = Nothing
    Set f = Nothing
    Set s = Nothing
    On Error GoTo 0
End Sub

Đây nữa ạ

Large Excel file - how to reduce the size?
Zone:
Microsoft Excel Spreadsheet Software
Tags:
excel, file, size, reduce, large
I have an Excel file with UsedRange = A1:CH102. The saved size is 4151 kB. I have found a way to reduce the size:
PHP:
Option Base 1

Sub ReduceSize()
  Dim lAntR As Long
  Dim iAntK As Integer
  Dim aR() As Single
  Dim aK() As Single
  Dim n As Integer
  Dim sFil1 As String
  Dim sFil2 As String
  Dim sKat As String
  Dim sArk As String
  
  sFil1 = ActiveWorkbook.Name
  sKat = ActiveWorkbook.Path
  sArk = ActiveSheet.Name
  
  lAntR = Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
  iAntK = Cells.Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
  
  ReDim aR(lAntR)
  ReDim aK(iAntK)
  For n = 1 To lAntR
    aR(n) = Rows(n).RowHeight
  Next n
  For n = 1 To iAntK
    aK(n) = Columns(n).ColumnWidth
  Next n
  
  Application.CutCopyMode = False
  Range(Cells(1, 1), Cells(lAntR, iAntK)).Copy
  Workbooks.Add
  sFil2 = ActiveWorkbook.Name
  ActiveSheet.Name = sArk
  ActiveSheet.Paste
  Application.CutCopyMode = False
  
  For n = 1 To lAntR
    Rows(n).RowHeight = aR(n)
  Next n
  For n = 1 To iAntK
    Columns(n).ColumnWidth = aK(n)
  Next n
  
  Workbooks(sFil1).Close savechanges:=False
  Application.DisplayAlerts = False
  Workbooks(sFil2).SaveAs sKat & "\" & sFil1
  Application.DisplayAlerts = True
End Sub

Nữa http://www.vbaexpress.com/kb/getarticle.php?kb_id=83
 
Bạn làm ơn giúp mình với
các file excel của mình bi jờ xử lý rất chậm, nhất là khi save lại và có hiện tượng chỉ save được file mở ra gần nhất, còn file đã mở trước đó thì save rất lâu . Mình download về chương trình của bạn và add-ins vào nhưng vẫn không biết sử dụng làm sao. Bạn hướng dẫn giúp mình với.
Rất cám ơn bạn
Quy
 
Thanks Bác dosnet nhìu,
Hy vọng mấy cái file mình đang dùng sẽ reduce size sau khi dùng tool này,
 
- Lang thang trên mạng, tình cờ tôi tìm được công cụ làm giảm dung lượng file Excel khá hay, up lên để các bạn tham khảo. Tiện ích được đóng gói thành một Add-Ins rất dễ sử dụng, tôi đã test và khá bất ngờ về tính hiệu quả của nó. Với những file làm việc lâu ngày, dung lượng file giảm đi đáng kể, dung lượng file giảm đi ít hay nhiều phụ thuộc vào từng file.
- Các bạn download về và thêm vào Add-Ins trong Excel của mình, sau khi cài đặt xong, sẽ xuất hiện tác vụ File clean trong Menu chính của Excel. Mở một file bất kỳ bạn cho là có rác, nên chọn kiểu dọn dẹp là StandardSave a Copy for me before clean để sao lưu trước khi tiến trình dọn dẹp thực hiện nhằm đảm bảo an toàn dữ liệu của bạn. Các bạn dùng và cho ý kiến nhé !
Anh ơi, anh có hướng dẫn cách sử dụng như thế nào không ah? Em mò thử nhưng thấy dung lượng giảm tuy nhiên bị vỡ định dạng so với bản gốc.
 
Lần chỉnh sửa cuối:
- Lang thang trên mạng, tình cờ tôi tìm được công cụ làm giảm dung lượng file Excel khá hay, up lên để các bạn tham khảo. Tiện ích được đóng gói thành một Add-Ins rất dễ sử dụng, tôi đã test và khá bất ngờ về tính hiệu quả của nó. Với những file làm việc lâu ngày, dung lượng file giảm đi đáng kể, dung lượng file giảm đi ít hay nhiều phụ thuộc vào từng file.
- Các bạn download về và thêm vào Add-Ins trong Excel của mình, sau khi cài đặt xong, sẽ xuất hiện tác vụ File clean trong Menu chính của Excel. Mở một file bất kỳ bạn cho là có rác, nên chọn kiểu dọn dẹp là StandardSave a Copy for me before clean để sao lưu trước khi tiến trình dọn dẹp thực hiện nhằm đảm bảo an toàn dữ liệu của bạn. Các bạn dùng và cho ý kiến nhé !
Sau khi dùng addins, file của em lại tăng dung lượng. Không hiểu nổi.
Hiện tại vẫn yên tâm khi dùng Virus macro warning của bác Nguyễn Duy Tuân
 
Web KT

Bài viết mới nhất

Back
Top Bottom