Много често се срещат хора, които запазват поверителни данни в работни книги на Excel. Когато тези работни книги трябва да се споделят с други колеги или приятели, ръчното изтриване е единствената налична опция. С тази статия обаче ще научите как бързо да изтривате поверителни колони или нежелани колони от множество работни книги.
Свали сега
Ако искате да започнете да използвате софтуера възможно най-скоро, можете да:
В противен случай, ако искате да си направите сам, можете да прочетете съдържанието по-долу.
Нека подготвим GUI
Както е показано на изображението, преименувайте Sheet 1 като “ControlPanel”. Използвайки фигури, бихме добавили бутони на този лист, за да се покаже като GUI (графичен потребителски интерфейс) за този инструмент. Имаме нужда от три полета на този GUI. Поле1 е да се покаже работната книга, която е избрана от потребителя. Поле 2 е да се покажат колони от избраната работна книга като падащо меню. Поле 3 е списък с колони, които трябва да бъдат премахнати от работната книга.
Как работи?

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
Настройте го
Към момента този скрипт обработва само една работна книга. Но използвайки метода на последния използван ред, можете да накарате макроса да обработва няколко работни книги в групов режим. Скриптът обаче не може да отвори корумпиран Excel работна книга.
Въведение на автора:
Ник Випонд е експерт по възстановяване на данни в DataNumen, Inc., която е световен лидер в технологиите за възстановяване на данни, включително възстановяване на думи и перспектива за възстановяване на софтуерни продукти. За повече информация посетете WWW.datanumen.com.