Bài viết này được viết sau một thời gian search khá mệt mỏi trên google, vì công việc thực tế của mình vấp phải hiện tượng một số file excel có chứa dữ liệu không hiểu từ đâu xuất hiện rất nhiều textbox nhỏ giữa các hàng, cột trong bảng tính. Các chương trình diệt virus thì không phát hiện ra, không có cách giải quyết, và dung lượng các file excel bị xuất hiện thêm hàng đống textbox này thì tăng gấp nhiều lần.
Search hoài cũng phải ra hehe, một trang nước ngoài đã chỉ một cách để xóa các textbox này bằng việc sử dụng macro. Mình đã làm và bây giờ tổng hợp lại một trong những cách để có thể giải quyết vấn đề này một cách tiện lợi và nhanh chóng.
Tq cách làm: tạo một Add-Ins ( giống như một thư viện hàm) cho excel có thể sử dụng linh hoạt và dễ dàng ở nhiều máy khác nhau, không mất công xây dựng lại và tất nhiên chức năng là tiêu diệt textbox ^,…,^
Chúng ta cần xây dựng các bước sau:
I. Tạo một Add-Ins macro có chức năng xóa các textbox “rỗng” trong excel:
1. Khởi động Excel, tạo một bảng tính mới (giả sử tên là Book1.xls). Trong Book1, bạn chỉ cần giữ lại một WorkSheet đầu tiên (xóa bỏ các WorkSheet từ Sheet2 đến hết, việc làm này nhằm thu gọn thư viện nên bạn có thể bỏ qua).
2. Chọn lệnh Tools.Marco.Visual Basic Editor (<Alt-F11>) để chuyển sang môi trường sọan thảo Visual Basic. Khung Project sẽ liệt kê các thư viện và dự án đang được mở trong Excel, trong đó có Book1.
3. Nhấn chuột vào dòng VBAProject (Book1) để chọn dự án này rồi chọn lệnh Insert. Module để chèn thêm một Module mới vào dự án (Module mới này sẽ có tên là Module1).
4. Nhấn đúp vào Module1 để chuyển sang khung sọan thảo bên phải khung Project.
Các bác paste đoạn code này vô:
Sub DeleteTextBoxes()
Dim myTextBox As Shape
For Each myTextBox In ActiveSheet.Shapes
If Left(myTextBox.Name, 8 ) = “Text Box” Then
If myTextBox.TextFrame.Characters.Count = 0 Then
myTextBox.Delete
End If
End If
Next
End Sub
Nội dung của đoạn code trên đại loại là xóa toàn bộ các textbox rỗng
.
5. Chọn lệnh File.Close and Return to Microsoft Excel (<Alt-Q>) để quay trở lại Excel.



Tháng Tám 28th, 2010
frank 
