File Excel nặng quá làm cho không thể chạy nổi nữa

Liên hệ QC

thanhpt204

Thành viên mới
Tham gia
25/7/12
Bài viết
14
Được thích
1
Donate (Momo)
Donate
Giới tính
Nữ
Nghề nghiệp
Kế toán
File kế toán bằng Excel của mình đang làm bị quá nặng, bạn nào có cách nào làm cho chạy nó nhẹ bớt và chạy nhanh hơn giúp mình khồng, từ sáng đến giờ chả làm gì được với nó cả. hichic.
Cả nhà cấp cứu hộ mình với.
 
99% file đó bị vỉrus nên nặng. Cần xóa Name rác, ẩn... Nếu dùng xls thì chuyển sang xlsx là giảm đáng kể đó
 
Chuyển từ xls sang xlsx là như thế nào vậy bác, có phải save as sang file khác dưới định dạng đó ah
Em có làm rồi mà không được bác ah. Làm thế nào để có thể xóa được các Name rác ah. Vì file này của em rất nhiều công thức.
 
Lần chỉnh sửa cuối:
Trong Diễn đàn bàn nhiều rôì, bạn tìm kiếm là ra ngay.
 
File kế toán bằng Excel của mình đang làm bị quá nặng, bạn nào có cách nào làm cho chạy nó nhẹ bớt và chạy nhanh hơn giúp mình khồng, từ sáng đến giờ chả làm gì được với nó cả. hichic.
Cả nhà cấp cứu hộ mình với.

Bạn thử dùng code này để xóa name rác trong 1 Workbook nhé.

Mã:
Sub Xuan()
'thu tuc xoa name rac
Dim Namerac As Name
For Each Namerac In ThisWorkbook.Names
If Namerac.Visible = False Then
Namerac.Delete
End If
Next
End Sub
 
Bạn thử dùng code này để xóa name rác trong 1 Workbook nhé.

Mã:
Sub Xuan()
'thu tuc xoa name rac
Dim Namerac As Name
For Each Namerac In ThisWorkbook.Names
If Namerac.Visible = False Then
Namerac.Delete
End If
Next
End Sub
Cái này là xóa các name bị ẩn đâu phải là name rác ?
 
Thì xóa Nam rác đơn giản mà bác, chỉ cần chọn Name with Errors rồi xóa toàn bộ là được
 
Thầy có thể viết cụ thể câu lệnh đó giúp

Cái này thủ công (nếu viết code phải tìm các ký tự lỗi), code làm gì bác. Bác vào tab Formulas/Name Manager/Filter/Names with Errors. Danh sách tên lỗi hiện ra, bác chọn Name đầu tiên và bấm Ctrl+End để chọn toàn bộ và xoá là được.
 
File kế toán bằng Excel của mình đang làm bị quá nặng, bạn nào có cách nào làm cho chạy nó nhẹ bớt và chạy nhanh hơn giúp mình khồng, từ sáng đến giờ chả làm gì được với nó cả. hichic.
Cả nhà cấp cứu hộ mình với.
File này chắc không phải do name rác mà là các shapes của phần mềm.
Thử file này xem có giúp gi được cho bạn không
Trong excel 2007 có chức năng xoá name lỗi và name rác. Nhưng cũng phải chạy code cho hiện name ẩn ra rồi mới xoá được. Nhớ sao lưu dự phòng trước khi quậy nhé.
 

File đính kèm

  • Xoa name rac.rar
    12.7 KB · Đọc: 167
File này chắc không phải do name rác mà là các shapes của phần mềm.
Thử file này xem có giúp gi được cho bạn không
Trong excel 2007 có chức năng xoá name lỗi và name rác. Nhưng cũng phải chạy code cho hiện name ẩn ra rồi mới xoá được. Nhớ sao lưu dự phòng trước khi quậy nhé.
Các Bạn có thể giúp mình sửa code xóa hinh chỉ trong 1 sheet có được kg, vì trong File của mình còn rất nhiều hình khác, mình kg muốn nó bị xóa! Cảm ơn các bạn!
 
Các Bạn có thể giúp mình sửa code xóa hinh chỉ trong 1 sheet có được kg, vì trong File của mình còn rất nhiều hình khác, mình kg muốn nó bị xóa! Cảm ơn các bạn!
Code này chỉ xóa các hình trong sheet hiên hành
PHP:
Sub xoa_shape()
Dim hinh As Shape
   For Each hinh In ActiveSheet.Shapes
      hinh.Visible = True
      hinh.Delete
   Next
End Sub
 
File này chắc không phải do name rác mà là các shapes của phần mềm.
Thử file này xem có giúp gi được cho bạn không
Trong excel 2007 có chức năng xoá name lỗi và name rác. Nhưng cũng phải chạy code cho hiện name ẩn ra rồi mới xoá được. Nhớ sao lưu dự phòng trước khi quậy nhé.
Hi anh, hôm nay đọc bài này em thấy có vấn đề muốn giải quyết
Em có 1 gút mắc là làm sao khi xóa hình mà mình vẫn giữ được những cái cần giữ
Em ví dụ: Tại cột C của sheet MA, bắt đầu từ C2 trở xuống em sẽ liệt kê tòan bộ tên như: Picture16, AutoShape 100, Line 1, Button 19 ... (tên này em chọn Object, rồi copy tên ở khung hiển thị địa chỉ, nằm gần khung Fomulas)
Như vậy khi chạy code thì những Object nào kg có tên ở cột C thì sẽ bị xóa, còn cái nào có tên thì vẫn giữ lại! khg biết có được kg nhỉ? Vì trong File em có thể có những hình hay Objects lạ mà em không kiểm sóat được (vì do người khác dùng file nên hay copy lung tung)!
Hặc giả có code nào đếm số lượng Objects trong 1 Sheet thì sẽ phát hiện có Objects lạ trong Sheet
Em cảm ơn!
 
Hi anh, hôm nay đọc bài này em thấy có vấn đề muốn giải quyết
Em có 1 gút mắc là làm sao khi xóa hình mà mình vẫn giữ được những cái cần giữ
Em ví dụ: Tại cột C của sheet MA, bắt đầu từ C2 trở xuống em sẽ liệt kê tòan bộ tên như: Picture16, AutoShape 100, Line 1, Button 19 ... (tên này em chọn Object, rồi copy tên ở khung hiển thị địa chỉ, nằm gần khung Fomulas)
Như vậy khi chạy code thì những Object nào kg có tên ở cột C thì sẽ bị xóa, còn cái nào có tên thì vẫn giữ lại! khg biết có được kg nhỉ? Vì trong File em có thể có những hình hay Objects lạ mà em không kiểm sóat được (vì do người khác dùng file nên hay copy lung tung)!
Hặc giả có code nào đếm số lượng Objects trong 1 Sheet thì sẽ phát hiện có Objects lạ trong Sheet
Em cảm ơn!

Thì bạn chỉnh lại code Quang Hai tí thôi:
Mã:
Sub xoa_shape()
  Dim aShp, tmp As String, hinh As Shape
  aShp = Array("Picture16", "AutoShape 100", "Line 1", "Button 19")
  tmp = vbBack & Join(aShp, vbBack) & vbBack
  For Each hinh In ActiveSheet.Shapes
    If InStr(tmp, hinh.Name) = 0 Then
      hinh.Visible = True
      hinh.Delete
    End If
 Next
End Sub
aShp = Array("Picture16", "AutoShape 100", "Line 1", "Button 19") nghĩa là bạn phải liệt kê ra những object nào muốn giữ lại tại đây
--------------------------------------
Còn nếu muốn giữ lại những object tại vùng nào đó (C2:C1000 chẳng hạn mà không cần biết object tên gì) thì dùng code khác:
Mã:
Function ShapeRange(ByVal wks As Worksheet, ByVal shp As Shape) As Range
  On Error Resume Next
  Set ShapeRange = wks.Range(shp.TopLeftCell, shp.BottomRightCell)
End Function
Mã:
Sub DelShape()
  Dim shpRng As Range, shp As Shape, wks As Worksheet
  On Error Resume Next
  Set wks = ActiveSheet
  For Each shp In wks.Shapes
    Set shpRng = ShapeRange(wks, shp)
    If Intersect(shpRng, Range("C2:C1000")) Is Nothing Then
      shp.Visible = True
      shp.Delete
    End If
  Next
End Sub
 
Lần chỉnh sửa cuối:
--------------------------------------
Còn nếu muốn giữ lại những object tại vùng nào đó (C2:C1000 chẳng hạn mà không cần biết object tên gì) thì dùng code khác:
Mã:
Function ShapeRange(ByVal wks As Worksheet, ByVal shp As Shape) As Range
  On Error Resume Next
  Set ShapeRange = wks.Range(shp.TopLeftCell, shp.BottomRightCell)
End Function
Mã:
Sub DelShape()
  Dim shpRng As Range, shp As Shape, wks As Worksheet
  On Error Resume Next
  Set wks = ActiveSheet
  For Each shp In wks.Shapes
    Set shpRng = ShapeRange(wks, shp)
    If Intersect(shpRng, Range("C2:C1000")) Is Nothing Then
      shp.Visible = True
      shp.Delete
    End If
  Next
End Sub
Thầy nói rõ thêm cách sử dụng hàm và code trên ạ!
Em cảm ơn!
 
Thầy nói rõ thêm cách sử dụng hàm và code trên ạ!
Em cảm ơn!

Thì copy code trên cho vào Module, xong chạy Sub DelShape là được rồi
Chỉ cần lưu ý chổ này:
If Intersect(shpRng, Range("C2:C1000")) Is Nothing Then
C2:C1000 là vùng chứa Shape mà bạn muốn giữ lại
 
Thì bạn chỉnh lại code Quang Hai tí thôi:
Mã:
Sub xoa_shape()
  Dim aShp, tmp As String, hinh As Shape
  aShp = Array("Picture16", "AutoShape 100", "Line 1", "Button 19")
  tmp = vbBack & Join(aShp, vbBack) & vbBack
  For Each hinh In ActiveSheet.Shapes
    If InStr(tmp, hinh.Name) = 0 Then
      hinh.Visible = True
      hinh.Delete
    End If
 Next
End Sub
aShp = Array("Picture16", "AutoShape 100", "Line 1", "Button 19") nghĩa là bạn phải liệt kê ra những object nào muốn giữ lại tại đây
Ô! cách này hay quá, nhưng sao mình thấy fải chạy code cho từng Sheet một, File của mình quá nhiều Sheet! Làm sao để nó chạy 1 lần cho 1 File kg nhỉ? mình cù lần cái vụ này! Bạn giúp mình nha! Xin cảm ơn rất nhiều!
 
Ô! cách này hay quá, nhưng sao mình thấy fải chạy code cho từng Sheet một, File của mình quá nhiều Sheet! Làm sao để nó chạy 1 lần cho 1 File kg nhỉ? mình cù lần cái vụ này! Bạn giúp mình nha! Xin cảm ơn rất nhiều!
Thì thử như vầy xem
Mã:
Sub xoa_shape()
  Dim aShp, tmp As String, hinh As Shape
  Dim ws As Worksheet
  aShp = Array("Picture16", "AutoShape 100", "Line 1", "Button 19")
  tmp = vbBack & Join(aShp, vbBack) & vbBack
  For Each ws In Worksheets
    For Each hinh In ws.Shapes
        If InStr(tmp, hinh.Name) = 0 Then
            hinh.Visible = True
            hinh.Delete
        End If
    Next
  Next
End Sub
 
Thì thử như vầy xem
Mã:
Sub xoa_shape()
  Dim aShp, tmp As String, hinh As Shape
  Dim ws As Worksheet
  aShp = Array("Picture16", "AutoShape 100", "Line 1", "Button 19")
  tmp = vbBack & Join(aShp, vbBack) & vbBack
  For Each ws In Worksheets
    For Each hinh In ws.Shapes
        If InStr(tmp, hinh.Name) = 0 Then
            hinh.Visible = True
            hinh.Delete
        End If
    Next
  Next
End Sub
Em mới phát hiện 1 điều thú vị: Code trên & code của Thần Ndu (bài 14), nó xóa bén List của validation, và điểm đặc biệt nữa là nó không cho phục hồi List của validation!!!!!
Hic, em có một số sheet bị như vậy!
Cho em hỏi:
1/Có cách nào để phục hồi List của validation nói trên
2/ Sửa code trên để nó kg xóa List của validation, hay Combobox ....
Em cảm ơn!
 
Em mới phát hiện 1 điều thú vị: Code trên & code của Thần Ndu (bài 14), nó xóa bén List của validation, và điểm đặc biệt nữa là nó không cho phục hồi List của validation!!!!!
Hic, em có một số sheet bị như vậy!
Cho em hỏi:
1/Có cách nào để phục hồi List của validation nói trên
Cái này dễ:
- Khởi động Excel
- Bấm Open và duyệt đến file của bạn
- Bấm mũi tên xổ xuống cạnh nút Open, chọn Open and Repair
2/ Sửa code trên để nó kg xóa List của validation, hay Combobox ....
Em cảm ơn!
Shape là nói chung tất cả các object. Để phân biệt từng loại, ta phải viết code "chỉ" trực tiếp đến loại đó
Ví dụ:
Mã:
Sub Test()

 Dim wks As Worksheet
 Set wks = ActiveSheet
 wks.Rectangles.Delete  ''<--- Xóa những shape thuộc loại Rectangle
 wks.Pictures.Delete      ''<--- Xóa những shape thuộc loại Picture

End Sub
vân vân...
Hoặc có thể dùng Type Property để xác định kiêu object
Mã:
Sub Test2()
  Dim shp As Shape
  For Each shp In ActiveSheet.Shapes
    MsgBox shp.Type, , shp.Name
  Next shp
End Sub
Vẽ nhiều loại object trên sheet rồi chạy code trên để xem chúng có Type là gì, từ đó mà loại trừ
----------------------------------------------
Code trên & code của Thần Ndu (bài 14)....
Mình được PHONG THẦN lúc nào không biết
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom