Dung lượng file quá nặng, cách khắc phục??

ontopoftheworld

Am a Peasant Guy
Tham gia ngày
17 Tháng ba 2007
Bài viết
109
Được thích
182
Điểm
0
Nơi ở
Xóm nhà lá
Các bác chỉ giúp em cách khắc phục file dung lượng quá nặng.
File này em sử dụng cho cả năm. nhưng em thực hiện khoá sổ hàng quý và lưu trữ trực tiếp dữ liệu các quý đó trên file luôn. Và vấn đề là mới có Quý 1 thôi mà nó lên tới hơn 4.200KB, sau khi xoá dữ liệu phát sinh thì chỉ giảm được hơn 200KB.Đó là em hạn chế sử dụng công thức mà chỉ sử dụng các marco. Nhưng sao vẫn nặng wá.
Sang năm sau mà dùng tiếp chắc khỏi chạy file wá. Không thì điên đầu với việc lập lại các mẩu biểu và lập lại các Name quá.
Vui lòng giúp em với
 

levanduyet

Thành viên gắn bó
Thành viên danh dự
Tham gia ngày
30 Tháng năm 2006
Bài viết
1,781
Được thích
4,541
Điểm
860
Nơi ở
HCM
Việc file quá lớn, chúng ta cũng đã bàn nhiều về vấn đề này.
File Excel khi bạn sử dụng thì file ngày càng lớn ra. Nếu bạn để ý, cũng với dữ liệu đó mà bạn copy qua file khác thì dung lượng sẽ giảm đáng kể! Việc này đã được khắc phục ở phiên bản 2007.

Lê Văn Duyệt
 

saudiec

Thành viên mới
Tham gia ngày
5 Tháng bảy 2006
Bài viết
36
Được thích
147
Điểm
0
ontopoftheworld đã viết:
Các bác chỉ giúp em cách khắc phục file dung lượng quá nặng.
File này em sử dụng cho cả năm. nhưng em thực hiện khoá sổ hàng quý và lưu trữ trực tiếp dữ liệu các quý đó trên file luôn. Và vấn đề là mới có Quý 1 thôi mà nó lên tới hơn 4.200KB, sau khi xoá dữ liệu phát sinh thì chỉ giảm được hơn 200KB.Đó là em hạn chế sử dụng công thức mà chỉ sử dụng các marco. Nhưng sao vẫn nặng wá.
Sang năm sau mà dùng tiếp chắc khỏi chạy file wá. Không thì điên đầu với việc lập lại các mẩu biểu và lập lại các Name quá.
Vui lòng giúp em với
Tôi nghĩ Add-in Ultimate có thể giúp bạn chuyện nầy. Utimate là một Excel add-in miễn phí, gồm khoảng 80 chức năng hữu ích, trong đó có tiện ích Optimise Workbook dùng để giảm dung lượng của file Excel. Tôi đã thử chạy optimise một file Excel 4.3MB (khoảng 20 sheet, có macro, pivot table, chart, dữ liệu...) chỉ còn lại 1.6MB. Sau khi optimise, Utimate sẽ tạo ra một file mới, không đụng gì đến file gốc của bạn. Tuy nhiên bạn nhớ cẩn thận sao lưu trước khi chạy optimise để đề phòng bất trắc.
Còn rất nhiều chức năng của Ultimate khác mà bạn có thể khám phá.
Bạn có thể tải Ultimate ở đây:
"http://homepage.ntlworld.com/elisabethh.brown/SetUp.exe"
và file hướng dẫn (pdf) ở đây:
"http://homepage.ntlworld.com/elisabethh.brown/Ultimate%20Add-In.pdf"
Chúc bạn vui
 
Lần chỉnh sửa cuối:

PhanTuHuong

Excel & AutoCad & VBA & VB.NET
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
6,873
Được thích
23,459
Điểm
1,860
Nơi ở
Hà Nội
Thu nhỏ kích thước file Excel với Excel File Size Reduce

Bạn có một hay nhiều file Excel lưu trữ dữ liệu thường xuyên. Sau một thời gian bạn sẽ thấy kích thước file của nó sẽ lớn dần, ảnh hưởng đến tốc độ khi mở file cũng như chiếm nhiều không gian lưu trữ của đĩa hơn.

Chính vì vậy, việc thu nhỏ lại kích thước file sẽ giúp tăng tốc mở file, tiết kiệm dung lượng đĩa được nhiều hơn và Excel File Size Reduce chính là chương trình giúp bạn thực hiện điều đó.

Cách thu nhỏ như sau:

- Khởi động chương trình, bấm nút Add Excel File(s) và chọn file Excel có kích thước cần thu nhỏ hoặc bấm nút Add All Excel File(s) In Folder để chọn nhiều file Excel trong một thư mục.

- Bạn nhớ đánh dấu hộp kiểm Make backup of Excel files... để chương trình tạo một bản sao của mỗi file Excel trước khi thu nhỏ.

- Sau khi chọn xong, bạn bấm nút Reduce để chương trình tiến hành thu nhỏ các file đã chọn.

Sau khi file được thu nhỏ, bạn sẽ thấy kích thước mới của nó tại cột New Size.

Chương trình tương thích mọi Windows, bạn có thể tải dùng thử tại http://www.sobolsoft.com/excelsize/download/setup.exe, dung lượng 345KB.

Theo TN
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai

File đính kèm

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Cảm ơn nhiều nhé. mình làm theo mấy hướng dẫn mà không đc
Mình bị lỗi chỗ nào và cách giảm thế nào? có thể chỉ giúp mình đc ko?
Bạn tìm bài viết trên diễn đàn GPE, nguyên nhân làm tăng dung lượng File bất thường và làm cách nào để giảm dung lượng File tôi cũng đã có nhiều bài viết hướng dẫn rồi.
 

d05403054

Thành viên mới
Tham gia ngày
2 Tháng tám 2012
Bài viết
37
Được thích
4
Điểm
365
Tuổi
32
Bạn tìm bài viết trên diễn đàn GPE, nguyên nhân làm tăng dung lượng File bất thường và làm cách nào để giảm dung lượng File tôi cũng đã có nhiều bài viết hướng dẫn rồi.
Em cũng có 1 file excel ban đầu chỉ là vài trăm kb, nhưng trong quá trình làm vì 1 lý do nào đó (em cũng ko để ý) thì giờ phát hiện ra cột và dòng lên tới hơn 1 triệu. Giờ mở file excel đó ko lên nổi (hơn 8MB), anh/chị hướng dẫn cách fix file này dc ko vậy ? cách del cột, dòng thừa mà ko bị treo máy
Cám ơn anh/chị

 

thinhnx22

Thành viên hoạt động
Tham gia ngày
22 Tháng mười hai 2015
Bài viết
154
Được thích
33
Điểm
170
Em cũng có 1 file excel ban đầu chỉ là vài trăm kb, nhưng trong quá trình làm vì 1 lý do nào đó (em cũng ko để ý) thì giờ phát hiện ra cột và dòng lên tới hơn 1 triệu. Giờ mở file excel đó ko lên nổi (hơn 8MB), anh/chị hướng dẫn cách fix file này dc ko vậy ? cách del cột, dòng thừa mà ko bị treo máy
Cám ơn anh/chị

File đính kèm
 

File đính kèm

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Em cũng có 1 file excel ban đầu chỉ là vài trăm kb, nhưng trong quá trình làm vì 1 lý do nào đó (em cũng ko để ý) thì giờ phát hiện ra cột và dòng lên tới hơn 1 triệu. Giờ mở file excel đó ko lên nổi (hơn 8MB), anh/chị hướng dẫn cách fix file này dc ko vậy ? cách del cột, dòng thừa mà ko bị treo máy
Cám ơn anh/chị

1/ Không biết bạn định dạng kiểu gì mà nó hiểu sử sụng đến 16384 cột và đến 1046975 dòng đây là nguyên nhân chính dẫn đến tăng dung lượng và làm cho File ì ạch, chậm chạp.
2/ Cách bạn theo dõi là không hợp lý, nếu có thêm nhiều dữ liệu như bạn nêu thì làm cách nào để tổng hợp cùng một lúc.
3/ Nên chuyển qua sử dụng VBA làm 1 SheetForm để nhập liệu và tính toán ngay sheet này, sau đó lưu chỉ dữ liệu (không có hàm) vào sheet theo dõi thì sẽ tiện hơn.
 

d05403054

Thành viên mới
Tham gia ngày
2 Tháng tám 2012
Bài viết
37
Được thích
4
Điểm
365
Tuổi
32
1/ Không biết bạn định dạng kiểu gì mà nó hiểu sử sụng đến 16384 cột và đến 1046975 dòng đây là nguyên nhân chính dẫn đến tăng dung lượng và làm cho File ì ạch, chậm chạp.
2/ Cách bạn theo dõi là không hợp lý, nếu có thêm nhiều dữ liệu như bạn nêu thì làm cách nào để tổng hợp cùng một lúc.
3/ Nên chuyển qua sử dụng VBA làm 1 SheetForm để nhập liệu và tính toán ngay sheet này, sau đó lưu chỉ dữ liệu (không có hàm) vào sheet theo dõi thì sẽ tiện hơn.
Em cũng biết nguyên nhân dẫn tới sự ì ạch chậm chạp đó, nhưng hiện tại cái em cần biết cách fix thế nào để triệt tiêu số cột và dòng thừa đó để khắc phục nếu sau này gặp lại lõi này
Em cũng ghi nhận ý kiến của bác là sẽ chuyển qua sheet khác để chỉ lưu dữ liệu, nhưng do ko rành và ko biết về VBA nên cũng ko biết làm ntn, mong bác hướng dẫn cụ thể cho em
Em cám ơn
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Em cũng biết nguyên nhân dẫn tới sự ì ạch chậm chạp đó, nhưng hiện tại cái em cần biết cách fix thế nào để triệt tiêu số cột và dòng thừa đó để khắc phục nếu sau này gặp lại lõi này
Em cũng ghi nhận ý kiến của bác là sẽ chuyển qua sheet khác để chỉ lưu dữ liệu, nhưng do ko rành và ko biết về VBA nên cũng ko biết làm ntn, mong bác hướng dẫn cụ thể cho em
Em cám ơn
Người ta làm sẳn và hướng dẫn sơ qua bạn cứ thế mà dùng (đâu cần phải biết VBA).
Bạn muốn sử dụng VBA thì đăng bài trong Box Lập trình với Excel (đính kèm File trên), tiêu đề bài viết có thể là "Giúp SheetForm để nhập liệu vào sheet Chi tiết", thì sẽ có thành viên giúp.
 
Lần chỉnh sửa cuối:

batman1

Thành viên gắn bó
Tham gia ngày
8 Tháng chín 2014
Bài viết
2,504
Được thích
3,787
Điểm
560
Người ta làm sẳn và hướng dẫn sơ qua bạn cứ thế mà dùng (đâu cần phải biết VBA).
Bạn muốn sử dụng VBA thì đăng bài trong Box Lập trình với Exce (đính kèm File trên), tiêu đề bài viết có thể là "Giúp SheetForm để nhập liệu vào sheet Chi tiết", thì sẽ có thành viên giúp.
VBA chẳng qua là bạn xui người ta, bạn "ép" người ta thôi. Hiện thời người ta chưa có nhu cầu làm 1 SheetForm để nhập liệu hay bố trí dữ liệu để in Phiếu lương v...v. Người ta hỏi gì thì giúp vấn đề đó thôi.

Hiện thời người ta chỉ có nhu cầu được hướng dẫn về cách Delete hàng nghìn cột và hàng triệu dòng (cái mà người ta đã biết, không cần phải ý thức cho họ nữa) sao cho không bị treo máy.

Em cũng biết nguyên nhân dẫn tới sự ì ạch chậm chạp đó, nhưng hiện tại cái em cần biết cách fix thế nào để triệt tiêu số cột và dòng thừa đó để khắc phục nếu sau này gặp lại lõi này
Máy tôi yếu (18 năm tuổi) và tôi không đủ kiên nhẫn để mở tập tin của bạn. Vì thế tôi không biết tập tin bị kẹt ở đâu. Tuy nhiên thay vì Delete dòng cột của sheet cứng đầu thì bạn luôn có thể thử cách khác: tạo sheet mới -> copy từ sheet cứng đầu một vùng dữ liệu vừa đủ sang sheet mới được tạo -> Delete sheet cứng đầu. Những thao tác kể trên bạn có thể làm bằng tay hoặc bằng code.

Tôi không nói là phải làm theo cách tôi nói ở trên vì có nhiều cách. Tôi không nói là cách kể trên là tốt nhất. Thậm chí tôi không nói là cách kể trên luôn dẫn tới thành công. Tôi chỉ khuyên bạn thử. Bạn thử không mất tiền thì cứ thử thôi.

Nếu bạn muốn làm bằng code thì code ở dưới. Trước tiên vài lưu ý.

1. Lưu ý:
- tôi cho là vùng dữ liệu vừa đủ cần copy từ sheet cứng đầu sang sheet mới được tạo là A1:Z1000. Nếu Z1000 chưa đủ thì sửa Z1000 thành giá trị sao cho vùng cần copy là đủ. Dư một chút chả sao vì sau đó bạn luôn có thể Delete bằng tay.

- Các bước thực hiện: mở tập tin cứng đầu -> nhấn Alt + F11 -> trong VBE chọn project của mình (T11 FIX.xlsx) trong cửa sổ Project -> menu Insert -> chọn Module -> dán code tôi viết ở cuối vào Module1 -> nhấn F5 (hoặc menu Run -> chọn Run Sub / UserForm) -> đóng cửa sổ VBE -> lưu lại tập tin với tên khác (Save As) -> nếu được hỏi thì chọn Yes để không ghi Module1 cùng macro. Mục đích ghi với tên khác là để có cơ hội kiểm tra và "nơi" quay về khi gặp lỗi. Nếu sau vài lần mở và kiểm tra bạn thấy tập tin mới y như tập tin cũ, không bị thiếu bất cứ thứ gì, không bị lỗi thì bạn mới có thể delete tập tin cứng đầu và đổi tên tập tin mới thành tên của tập tin cứng đầu. Tuy nhiên tôi khuyên không nên delete tập tin cứng đầu mà chỉ đổi tên nó. Sau 1 năm, 2 năm( :D ) nếu tập tin mới hoạt động tốt thì mới delete tập tin cứng đầu.

Tóm lại nên giữ tập tin cứng đầu đủ lâu để nếu có trường hợp bất trắc thì luôn có tập tin gốc.

- Nếu tập tin cứng đầu có chứa link tới tập tin ngoài thì khi chạy code sẽ có một cửa sổ "Update Values" nhẩy ra để bạn chọn tập tin ngoài. Khi đó bạn không chọn tập tin ngoài nào cả mà chỉ nhấn Cancel để đóng cửa sổ.

2. Code cho Module1.
Mã:
Sub copy()
Dim sh As Worksheet
    Set sh = ThisWorkbook.Worksheets.Add
    ThisWorkbook.Worksheets("Chi tiet").Range("A1:Z1000").copy
    With sh.Range("A1")
        .PasteSpecial xlPasteFormulas
        .PasteSpecial xlPasteFormats
        .PasteSpecial xlPasteColumnWidths
    End With
    Application.CutCopyMode = False
    ThisWorkbook.Worksheets("Chi tiet").Delete
    sh.Name = "Chi tiet"
End Sub
 
Lần chỉnh sửa cuối:

d05403054

Thành viên mới
Tham gia ngày
2 Tháng tám 2012
Bài viết
37
Được thích
4
Điểm
365
Tuổi
32
VBA chẳng qua là bạn xui người ta, bạn "ép" người ta thôi. Hiện thời người ta chưa có nhu cầu làm 1 SheetForm để nhập liệu hay bố trí dữ liệu để in Phiếu lương v...v. Người ta hỏi gì thì giúp vấn đề đó thôi.

Hiện thời người ta chỉ có nhu cầu được hướng dẫn về cách Delete hàng nghìn cột và hàng triệu dòng (cái mà người ta đã biết, không cần phải ý thức cho họ nữa) sao cho không bị treo máy.



Máy tôi yếu (18 năm tuổi) và tôi không đủ kiên nhẫn để mở tập tin của bạn. Vì thế tôi không biết tập tin bị kẹt ở đâu. Tuy nhiên thay vì Delete dòng cột của sheet cứng đầu thì bạn luôn có thể thử cách khác: tạo sheet mới -> copy từ sheet cứng đầu một vùng dữ liệu vừa đủ sang sheet mới được tạo -> Delete sheet cứng đầu. Những thao tác kể trên bạn có thể làm bằng tay hoặc bằng code.

Tôi không nói là phải làm theo cách tôi nói ở trên vì có nhiều cách. Tôi không nói là cách kể trên là tốt nhất. Thậm chí tôi không nói là cách kể trên luôn dẫn tới thành công. Tôi chỉ khuyên bạn thử. Bạn thử không mất tiền thì cứ thử thôi.

Nếu bạn muốn làm bằng code thì code ở dưới. Trước tiên vài lưu ý.

1. Lưu ý:
- tôi cho là vùng dữ liệu vừa đủ cần copy từ sheet cứng đầu sang sheet mới được tạo là A1:Z1000. Nếu Z1000 chưa đủ thì sửa Z1000 thành giá trị sao cho vùng cần copy là đủ. Dư một chút chả sao vì sau đó bạn luôn có thể Delete bằng tay.

- Các bước thực hiện: mở tập tin cứng đầu -> nhấn Alt + F11 -> trong VBE chọn project của mình (T11 FIX.xlsx) trong cửa sổ Project -> menu Insert -> chọn Module -> dán code tôi viết ở cuối vào Module1 -> nhấn F5 (hoặc menu Run -> chọn Run Sub / UserForm) -> đóng cửa sổ VBE -> lưu lại tập tin với tên khác (Save As) -> nếu được hỏi thì chọn Yes để không ghi Module1 cùng macro. Mục đích ghi với tên khác là để có cơ hội kiểm tra và "nơi" quay về khi gặp lỗi. Nếu sau vài lần mở và kiểm tra bạn thấy tập tin mới y như tập tin cũ, không bị thiếu bất cứ thứ gì, không bị lỗi thì bạn mới có thể delete tập tin cứng đầu và đổi tên tập tin mới thành tên của tập tin cứng đầu. Tuy nhiên tôi khuyên không nên delete tập tin cứng đầu mà chỉ đổi tên nó. Sau 1 năm, 2 năm( :D ) nếu tập tin mới hoạt động tốt thì mới delete tập tin cứng đầu.

Tóm lại nên giữ tập tin cứng đầu đủ lâu để nếu có trường hợp bất trắc thì luôn có tập tin gốc.

- Nếu tập tin cứng đầu có chứa link tới tập tin ngoài thì khi chạy code sẽ có một cửa sổ "Update Values" nhẩy ra để bạn chọn tập tin ngoài. Khi đó bạn không chọn tập tin ngoài nào cả mà chỉ nhấn Cancel để đóng cửa sổ.

2. Code cho Module1.
Mã:
Sub copy()
Dim sh As Worksheet
    Set sh = ThisWorkbook.Worksheets.Add
    ThisWorkbook.Worksheets("Chi tiet").Range("A1:Z1000").copy
    With sh.Range("A1")
        .PasteSpecial xlPasteFormulas
        .PasteSpecial xlPasteFormats
        .PasteSpecial xlPasteColumnWidths
    End With
    Application.CutCopyMode = False
    ThisWorkbook.Worksheets("Chi tiet").Delete
    sh.Name = "Chi tiet"
End Sub
Đúng như bác Batman1 đã nói, cái em cần đang là cách fix lỗi dòng và cột dư thừa chứ em chưa cần tới việc phải tạo sheet mới rồi nhập liệu này kia, và code của bác cũng như câu trả lời của bác đã thoải mãn 100% tâm tư và nguyện vọng của em
Thật sự ko biết nói gì hơn ngoài việc cám ơn bác rất nhiều đã giải đáp câu hỏi của em bấy lâu nay, gặp rất nhiều trường hợp này nhưn ko biết lý do tại sao và cách fix ntn, lúc đó chỉ còn cách copy từ sheet cũ qua sheet mới (làm cách này thì em ko hỏi trên GPE làm gì nữa)và delete sheet cũ đi thôi
1 lần nữa cám ơn bác rất nhiều, cho phép em lưu đoạn code của bác để fix cho những trường hợp tương tự về sau
Em cũng cám ơn bác be09 đã cho em giải pháp khác nữa nhé
 
Top Bottom