Очень часто можно увидеть, как люди сохраняют конфиденциальные данные в книгах Excel. Когда этими книгами нужно поделиться с другими коллегами или друзьями, удаление вручную — единственный доступный вариант. Однако из этой статьи вы узнаете, как быстро удалить конфиденциальные или ненужные столбцы из нескольких книг.
Скачать сейчас
Если вы хотите начать использовать программное обеспечение как можно скорее, то можете:
Загрузите программное обеспечение сейчас
В противном случае, если вы хотите сделать своими руками, вы можете прочитать содержимое ниже.
Давайте подготовим графический интерфейс
Как показано на изображении, переименуйте Лист 1 в «Панель управления». Используя формы, мы добавили бы кнопки на этот лист, чтобы он отображался как 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., которая является мировым лидером в области технологий восстановления данных, включая восстановление слов и программные продукты для восстановления Outlook. Для получения дополнительной информации посетите www.datanumen.com.
