File excel bị lỗi không mở name manager được

Liên hệ QC

Trojan

Thành viên hoạt động
Tham gia
13/3/08
Bài viết
161
Được thích
78
Chào mọi người.
Như title ở trên nhờ mọi người xem giúp file của tôi bị lỗi không mở name manager được để xóa name rác. Nguyên nhân vì sao và cách xử lý.
Chân thành cảm ơn.
 

File đính kèm

  • 123.xlsx
    1.2 MB · Đọc: 23
File của bạn bị chứa quá nhiều name, nhiều đến mức không thể mở hộp thoại name lên luôn. Cách xử lý là chuyển file thành file zip -> xl/workbook.xml xoá hết mục definedNames đi rồi lưu lại file rồi chuyển lại thành file excel là xong.
Mình có đính kèm file đã xoá hết name.
 

File đính kèm

  • 123 rev01.xlsx
    590.5 KB · Đọc: 3
Nhờ bác hướng dẫn cụ thể hơn được không ạ? Mình chưa biết cách chuyển sang loại gì, bằng phần mềm nào? Cảm ơn nhiều.
 
Nhờ bác hướng dẫn cụ thể hơn được không ạ? Mình chưa biết cách chuyển sang loại gì, bằng phần mềm nào? Cảm ơn nhiều.
Bạn đổi đuôi của file .xlsx thành .zip rồi thao tác như một file nén bình thường thôi, bạn có thể dùng phần mềm xml notepad để ở file workbook.xml và điều chỉnh cho đỡ rối. Sau khi sửa file .zip xong thì đổi đuôi ngược lại thành .xlsx
 
File của bạn bị chứa quá nhiều name, nhiều đến mức không thể mở hộp thoại name lên luôn. Cách xử lý là chuyển file thành file zip -> xl/workbook.xml xoá hết mục definedNames đi rồi lưu lại file rồi chuyển lại thành file excel là xong.
Mình có đính kèm file đã xoá hết name.
Thật ra có hơn 9694 name trong 1 file cung không phải đến nỗi không hiển thị được. Chắc phải có nguyên nhân khác. E thử xóa name bằng code VBA nhưng sau khi xóa vẫn không hiển thị được hộp thoại name manager
 
Thật ra có hơn 9694 name trong 1 file cung không phải đến nỗi không hiển thị được. Chắc phải có nguyên nhân khác. E thử xóa name bằng code VBA nhưng sau khi xóa vẫn không hiển thị được hộp thoại name manager
Có tận 92723 cái name lận bạn ạ. Nếu bạn xoá bằng vba mà chỉ xoá được 9694 cái name thì vẫn còn rất nhiều name chưa được xoá nên không hiện được hộp thoại name manager thì cũng phải.
 
Thật ra có hơn 9694 name trong 1 file cung không phải đến nỗi không hiển thị được. Chắc phải có nguyên nhân khác. E thử xóa name bằng code VBA nhưng sau khi xóa vẫn không hiển thị được hộp thoại name manager
Xóa bằng VBA chắc bạn có để câu Resume next nên nó thoát ra rồi. Có 1 name lỗi #REF và VBA không chấp nhận và dừng lại.
 
Xóa bằng VBA chắc bạn có để câu Resume next nên nó thoát ra rồi. Có 1 name lỗi #REF và VBA không chấp nhận và dừng lại.
Vậy dùng VBA xử lý các name này như thế nào bác nhỉ? em chưa nghĩ ra hướng nào cả!
Có tận 92723 cái name lận bạn ạ. Nếu bạn xoá bằng vba mà chỉ xoá được 9694 cái name thì vẫn còn rất nhiều name chưa được xoá nên không hiện được hộp thoại name manager thì cũng phải.
Khiếp thật...............
 

File đính kèm

  • ABC.png
    ABC.png
    232.1 KB · Đọc: 11
Vậy dùng VBA xử lý các name này như thế nào bác nhỉ?
Thì cứ xóa từng cái thôi. Cho vòng lặp duyệt ngược để nếu không xóa được cũng không ảnh hưởng tiến trình.
Mã:
Sub DelNames()
    On Error Resume Next
    Dim i As Long, n As Long
    Application.Calculation = xlCalculationManual
    n = Names.Count
    For i = n To 1 Step -1
        Names(i).Delete
        If i Mod 1000 = 0 Then
            DoEvents
            Debug.Print "Còn " & i & " name."
        End If
    Next
    Application.Calculation = xlCalculationAutomatic
    MsgBox "Xong"
End Sub
 
Thì cứ xóa từng cái thôi. Cho vòng lặp duyệt ngược để nếu không xóa được cũng không ảnh hưởng tiến trình.
Duyệt ngược sẽ không xót cái nào và chạy ổn. Nhưng em dùng For Each thì bị tắt file đột ngột luôn, không biết anh có bị như thế không.
 
File của bạn bị chứa quá nhiều name, nhiều đến mức không thể mở hộp thoại name lên luôn. Cách xử lý là chuyển file thành file zip -> xl/workbook.xml xoá hết mục definedNames đi rồi lưu lại file rồi chuyển lại thành file excel là xong.
Mình có đính kèm file đã xoá hết name.
Cách xóa hết Name này thì vứt luôn cái tệp vào thùng rác cho nhanh đó bạn.

@Trojan
Xóa tuần tự các name với VBA:
  1. Xóa các name lỗi từng trang tính trước.
  2. Xóa các name lỗi dự án.
  3. Xóa các name trùng value của trang tính và dự án, giữ lại name nếu được tham chiếu.
  4. Xóa các name không được tham chiếu nếu cần.
Khi thực hiện các bước đồng thời xóa các biểu thức tham chiếu đến các name đã được xóa nếu có.
Giữ lại name có value. Để đề phòng các name này là quan trọng không bị xóa.
 
Cách xóa hết Name này thì vứt luôn cái tệp vào thùng rác cho nhanh đó bạn.

@Trojan
Xóa tuần tự các name với VBA:
  1. Xóa các name lỗi từng trang tính trước.
  2. Xóa các name lỗi dự án.
  3. Xóa các name trùng value của trang tính và dự án, giữ lại name nếu được tham chiếu.
  4. Xóa các name không được tham chiếu nếu cần.
Khi thực hiện các bước đồng thời xóa các biểu thức tham chiếu đến các name đã được xóa nếu có.
Giữ lại name có value. Để đề phòng các name này là quan trọng không bị xóa.
Vâng em chỉ dùng cách này nếu ko dùng bất kỳ name nào trong file nữa thôi chứ nếu trong file có dùng name thì xoá kiểu này thì vứt hết.
Nếu dùng VBA thì em có thể làm được số 1 với số 2, còn số 3 với số 4 em vẫn làm thủ công. Em vẫn chưa nghĩ ra cách xử lý bằng VBA, anh có thể hướng dẫn thêm được không. Cái khó ở đây là một số file người ta dùng name để lưu công thức dài dòng mà hình dáng của nó rất giống name rác.
 
Có thời gian tôi sẽ phát triển Add-in hỗ trợ xóa, phục hồi, và tự động cảnh báo số lượng Name quá lớn khi làm việc.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom