Code macro xóa Define name trong excel

Liên hệ QC

khanhvc2003

Thành viên mới
Tham gia
10/3/08
Bài viết
34
Được thích
6
Mình có file excel có nhiều define name trong đó.

Bạn nào có code macro để xoá hết các define name cho mình xin với.


Xin cám ơn.
 

File đính kèm

  • Define name.rar
    29.8 KB · Đọc: 238
Sub XoaName()
Dim N as name
For each N in activeworkbook.names
N.Delete
Next
End Sub

Bạn thử code này xem.
 
Đối với những name cứng đầu, không thể xóa được theo code này đâu anh nhé.

Được nhưng phải kiên nhẫn:
Dùng code này:
PHP:
Sub DelNames()
  Dim N As Name
  On Error Resume Next
  With ActiveWorkbook
    For Each N In .Names
      N.Delete
    Next
    MsgBox .Names.Count
  End With
End Sub
- Chạy code xong, để ý MsgBox
- Đóng và lưu file
- Mở lên và chạy lại code ---> Để ý MsgBox sẽ thấy số name có giảm
- Tiếp tục đóng và lưu file.. rồi lại mở file và chạy code
vân vân... đến khi sạch thì thôi
-------------
Để công việc nhẹ nhàng hơn, ta sửa code thế này:
PHP:
Sub Auto_Open()
  Dim N As Name
  On Error Resume Next
  Application.DisplayAlerts = False
  With ActiveWorkbook
    For Each N In .Names
      N.Delete
    Next
    MsgBox .Names.Count
    If .Names.Count Then .Close True
    Application.DisplayAlerts = True
  End With
End Sub
Xong!
 
Lần chỉnh sửa cuối:
Được nhưng phải kiên nhẫn:
Dùng code này:
PHP:
Sub DelNames()
  Dim N As Name
  On Error Resume Next
  With ActiveWorkbook
    For Each N In .Names
      N.Delete
    Next
    MsgBox .Names.Count
  End With
End Sub
- Chạy code xong, để ý MsgBox
- Đóng và lưu file
- Mở lên và chạy lại code ---> Để ý MsgBox sẽ thấy số name có giảm
- Tiếp tục đóng và lưu file.. rồi lại mở file và chạy code
vân vân... đến khi sạch thì thôi
-------------
Để công việc nhẹ nhàng hơn, ta sửa code thế này:
PHP:
Sub Auto_Open()
  Dim N As Name
  On Error Resume Next
  Application.DisplayAlerts = False
  With ActiveWorkbook
    For Each N In .Names
      N.Delete
    Next
    MsgBox .Names.Count
    If .Names.Count Then .Close True
    Application.DisplayAlerts = True
  End With
End Sub
Xong!

Trước tiên khi chép cái Auto_Open, xin vui lòng xóa trước 2 name Print_Area trước đi, vì thử đóng mở có hơn 30 lần nó còn 2 name đó liên tục, thế là phải Macro Security --> High
 
Được nhưng phải kiên nhẫn:
Dùng code này:
PHP:
Sub DelNames()
  Dim N As Name
  On Error Resume Next
  With ActiveWorkbook
    For Each N In .Names
      N.Delete
    Next
    MsgBox .Names.Count
  End With
End Sub
- Chạy code xong, để ý MsgBox
- Đóng và lưu file
- Mở lên và chạy lại code ---> Để ý MsgBox sẽ thấy số name có giảm
- Tiếp tục đóng và lưu file.. rồi lại mở file và chạy code
vân vân... đến khi sạch thì thôi
-------------
Để công việc nhẹ nhàng hơn, ta sửa code thế này:
PHP:
Sub Auto_Open()
  Dim N As Name
  On Error Resume Next
  Application.DisplayAlerts = False
  With ActiveWorkbook
    For Each N In .Names
      N.Delete
    Next
    MsgBox .Names.Count
    If .Names.Count Then .Close True
    Application.DisplayAlerts = True
  End With
End Sub
Xong!

ấy chà, đã là code thì làm sao phải gọn lẹ chứ thế này có lẽ là chậm hơn xoá tay rồi. huhu
 
ấy chà, đã là code thì làm sao phải gọn lẹ chứ thế này có lẽ là chậm hơn xoá tay rồi. huhu
Chời ơi là chời, name ít thì xóa tay, cần gì code. Nếu có hàng trăm, nghìn name rác, thử hỏi cái nào nhanh hơn.
Nhờ giúp mà sao không có chút gì mang ơn.
 
Mình có file excel có nhiều define name trong đó.

Bạn nào có code macro để xoá hết các define name cho mình xin với.


Xin cám ơn.
Bạn dùng Excel 2007 để xóa các name đó đi. Được đó
Bạn nhấn Ctrl+F3 và chọn các name cần xóa trong Filter
Bạn thử đi
 
ấy chà, đã là code thì làm sao phải gọn lẹ chứ thế này có lẽ là chậm hơn xoá tay rồi. huhu

Bạn muốn xóa lẹ, chỉ dùng Excel2007 trở lên thì sẽ lẹ hơn, tuy nhiên do file của bạn bị nhiễm virus nên có rất nhiều name bị ẩn, bạn phải cho hiện hình lên trước:

Sub hienname()
Dim n As Name
For Each n In ActiveWorkbook.Names
n.Visible = True
Next
End Sub

Sau đó bấm Ctrl+F3 để hiện hộp name, bạn chọn name đầu tiên, sau đó giữ shift và chọn name cuối cùng nó sẽ phủ khối toàn bộ name, sau đó bấm vào nút Delete là xóa hết ngay lập tức!
 
ấy chà, đã là code thì làm sao phải gọn lẹ chứ thế này có lẽ là chậm hơn xoá tay rồi. huhu

Thì bạn cứ thử xóa bằng tay xem có nhanh hơn không? Nếu nhanh hơn thì cứ dùng.. tay vậy
Ẹc... Ẹc...
------------
Sau đó bấm Ctrl+F3 để hiện hộp name, bạn chọn name đầu tiên, sau đó giữ shift và chọn name cuối cùng nó sẽ phủ khối toàn bộ name, sau đó bấm vào nút Delete là xóa hết ngay lập tức!
Với cái file quỷ này thì dù dùng Excel 2007 hay 2010, xóa được 1 lần toàn bộ thì name nó vẫn.. cứ còn
Thử xem thì biết
 
Lần chỉnh sửa cuối:
Thì bạn cứ thử xóa bằng tay xem có nhanh hơn không? Nếu nhanh hơn thì cứ dùng.. tay vậy
Ẹc... Ẹc...
------------

Với cái file quỷ này thì dù dùng Excel 2007 hay 2010, xóa được 1 lần toàn bộ thì name nó vẫn.. cứ còn
Thử xem thì biết

ĐÚNG! Trước mắt thấy bị xóa hết, nhưng thoát hộp Name ra rồi mở lại, nó vẫn còn trơ trơ! Cho nên chịu khó giải quyết ĐÓNG-MỞ thôi!
 
Có 1 cách bắt chước theo bài xóa Style này:
http://www.giaiphapexcel.com/forum/...-Formating-Style-cứng-đầu&p=380671#post380671
Tức là:
- Mở file
- Save As thành đuôi .xlsm
- Đóng file
- Đổi đuôi thành .zip
- Mở file zip, duyệt thư mục xl và copy file workbook.xml ra Desktop
- Mở file workbook.xml bằng Notepad
- Tìm từ khóa definedNames ---> Xóa từ chuổi <definedNames> đến chuổi </definedNames> cuối cùng tìm thấy ---> Tức ở giữa cặp từ khóa này cũng xóa sạch
- Xong, lưu file workbook.xml rồi kéo file trả lại vào file .zip
- Đổi đuôi file .zip thành .xlsm
- Mở file và kiểm tra
----------------
Nói có vẻ dài dòng chứ làm chỉ trong vòng 30s là xong!
 
Nếu như các file đó do mình làm ra hoặc mình sử dụng thì đơn giản rồi.

Bên cty nhận cái file đó từ 1 công ty khác gửi khoảng 300 người cty mình, rồi mỗi người chỉnh lại chuyển mail lòng vòng.

Bây giờ hầu như toàn cty rồi, thỉnh thoảng có một số người không mở được. Các file excel định dạng 2003.

Mình cũng dùng tools VirusMacroWarning nhưng vẫn không thành (nó cho xoá, cho lưu lại nhưng mở lại thì nó lại còn)

Để khắc phục mình phải làm như sau:

Dùng excel 2007 mở lên vào manage name xoá hết name đi, và save as với định dạng 2007 mới được chứ nếu lưu đè lên file 2003 thì mở ra nó còn lại.

Nhưng khổ nổi là ở cty mình có hơn một nữa (400 users) dùng excel 2003.

Ý tưởng của mình là xin code xoá Define name một cách hoàn hảo rồi làm add-ins, sau đó đứng trên server áp xuống tất cả các máy con một lần luôn. Nếu khi mở excel lên có Define name thì xoá luôn mình không cần phải sửa từng file của từng máy.


Cám ơn mọi người đã chia sẽ.
 
Ý tưởng của mình là xin code xoá Define name một cách hoàn hảo rồi làm add-ins, sau đó đứng trên server áp xuống tất cả các máy con một lần luôn. Nếu khi mở excel lên có Define name thì xoá luôn mình không cần phải sửa từng file của từng máy.


Cám ơn mọi người đã chia sẽ.

Dám cá với bạn là KHÔNG CÓ CODE NÀO GỌI LÀ HOÀN HẢO CẢ!
Gặp những name "cứng đầu" code cũng đành chịu thôi
Tôi đang nghĩ ý tưởng xây dựng code dựa trên thao tác của bài #13 nhưng còn gặp nhiều khó khăn quá
 
Dám cá với bạn là KHÔNG CÓ CODE NÀO GỌI LÀ HOÀN HẢO CẢ!
Gặp những name "cứng đầu" code cũng đành chịu thôi
Tôi đang nghĩ ý tưởng xây dựng code dựa trên thao tác của bài #13 nhưng còn gặp nhiều khó khăn quá

Bạn rất Bờ Rồ và nhiệt tình, mình đã đọc nhiều bài viết của bạn, rất bổ ích.

Chúc bạn sớm tìm ra giải pháp để build code hoàn hảo.

Diễn đàn khá phong phú và giúp ích rất nhiều người ít biết nhiều về code như tôi.

hihi. Lần nữa thành thật cám ơn Bờ Rồ
 
Để công việc nhẹ nhàng hơn, ta sửa code thế này:
PHP:
Sub Auto_Open()
  Dim N As Name
  On Error Resume Next
  Application.DisplayAlerts = False
  With ActiveWorkbook
    For Each N In .Names
      N.Delete
    Next
    MsgBox .Names.Count
    If .Names.Count Then .Close True
    Application.DisplayAlerts = True
  End With
End Sub
Xong!

Dạ em cám ơn Thầy ạ.
Code của thầy chạy hoàn hảo ạ. Em có 1 file tầm 20 sheet, cũng tầm 500 name, mà chạy code 1 lượt là xong hết.
Chúc Thầy thật nhiều sức khỏe ạ.
 
Thật sự mới tham gia diễn đàn GPE được 1 tuần, mà đã được các thành viên xử lý giúp cho 4 lỗi rồi. Diễn đàn rất bổ ích.
Híc, các bạn bày cách thao tác dán code này ntn với, mình không biết bắt đầu thao tác từ đâu cả. Đi sâu vào các ngôn ngữ lập trình của excel mình k biết gì hết trơn hết.
 
Web KT
Back
Top Bottom