Việc mọi người lưu dữ liệu bí mật trong sổ làm việc Excel là điều rất bình thường. Khi phải chia sẻ những sổ làm việc này với đồng nghiệp hoặc bạn bè khác, xóa thủ công là lựa chọn duy nhất khả dụng. Tuy nhiên, với bài viết này, bạn sẽ học cách xóa nhanh các cột bí mật hoặc các cột không mong muốn khỏi nhiều sổ làm việc.
Tải xuống Ngay
Nếu bạn muốntart để sử dụng phần mềm càng sớm càng tốt, sau đó bạn có thể:
Tải xuống phần mềm ngay bây giờ
Còn không, nếu bạn muốn DIY, bạn có thể đọc nội dung bên dưới.
Hãy chuẩn bị GUI
Như trong hình, đổi tên Sheet 1 thành “ControlPanel”. Bằng cách sử dụng các hình dạng, chúng tôi sẽ thêm các Nút trên trang tính này để làm cho nó xuất hiện dưới dạng GUI (Giao diện người dùng đồ họa) cho công cụ này. Chúng tôi cần ba trường trên GUI này. Trường 1 dùng để hiển thị sổ làm việc được người dùng chọn. Trường 2 dùng để hiển thị các cột từ sổ làm việc đã chọn dưới dạng thả xuống. Trường 3 là danh sách các cột cần xóa khỏi sổ làm việc.
Cách sử dụng?

Sub P_fpick()
Dim v_fd As Office.FileDialog
Set v_fd = Application.FileDialog(msoFileDialogFilePicker)
With v_fd
.AllowMultiSelect = False
.Title = "Please select the Excel workbook"
.Filters.Clear
.Filters.Add "Excel", "*.xls*"
If .Show = True Then
cp.Range("B4").Value = .SelectedItems(1)
End If
End With
Dim wb As Workbook
Dim ab As Workbook
Set ab = ThisWorkbook
Set wb = Workbooks.Open(cp.Range("B4").Value)
Dim v_sheets As String
v_sheets = ""
Dim lc As Long
lc = wb.Sheets(1).Range("AZ1").End(xlToLeft).Column
Dim c As Long
For c = 1 To lc
If v_sheets = "" Then
v_sheets = wb.Sheets(1).Cells(1, c).Value
Else
v_sheets = v_sheets & "," & wb.Sheets(1).Cells(1, c).Value
End If
Next
wb.Close False
ab.Activate
With ab.Sheets(1).Range("N4:O5").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=v_sheets
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Add_Column()
If Range("Q4").Value = "" Then
Range("Q4").Value = Range("N4").Value
Else
Range("Q4").Value = Range("Q4").Value & "," & Range("N4").Value
End If
End Sub
Sub Delete_Columns()
Dim v_sheets() As String
Dim ab As Workbook
Dim wb As Workbook
Set ab = ThisWorkbook
Set wb = Workbooks.Open(Sheets(1).Range("B4").Text)
Dim lc As Long
lc = wb.Sheets(1).Range("AZ1").End(xlToLeft).Column
Dim c As Long
v_sheets = Split(ab.Sheets(1).Range("Q4").Text, ",")
Dim intcount As Long
For intcount = LBound(v_sheets) To UBound(v_sheets)
For c = 1 To lc
If wb.Sheets(1).Cells(1, c).Value = v_sheets(intcount) Then
wb.Sheets(1).Columns(c).Delete Shift:=xlToLeft
End If
Next c
Next intcount
wb.Close True
ab.Activate
End Sub
tinh chỉnh nó
Hiện tại, tập lệnh này chỉ xử lý một sổ làm việc. Tuy nhiên, bằng cách sử dụng phương pháp hàng được sử dụng gần đây nhất, bạn có thể làm cho macro xử lý nhiều sổ làm việc ở chế độ hàng loạt. Tuy nhiên, tập lệnh không thể mở một Excel bị hỏng sách bài tập.
Giới thiệu tác giả:
Nick Vipond là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm phục hồi từ và các sản phẩm phần mềm khôi phục triển vọng. Để biết thêm thông tin, hãy truy cập www.datanumennăm.