Очень часто можно увидеть, как люди сохраняют конфиденциальные данные в книгах Excel. Когда этими книгами нужно поделиться с другими коллегами или друзьями, удаление вручную — единственный доступный вариант. Однако из этой статьи вы узнаете, как быстро удалить конфиденциальные или ненужные столбцы из нескольких книг.
Скачать сейчас
Если вы хотите сtart использовать программное обеспечение как можно скорее, то вы можете:
Загрузите программное обеспечение сейчас
В противном случае, если вы хотите сделать своими руками, вы можете прочитать содержимое ниже.
Давайте подготовим графический интерфейс
Как показано на изображении, переименуйте Лист 1 в «Панель управления». Используя формы, мы добавили бы кнопки на этот лист, чтобы он отображался как GUI (графический интерфейс пользователя) для этого инструмента. Нам нужны три поля в этом графическом интерфейсе. Поле1 предназначено для отображения рабочей книги, выбранной пользователем. Поле 2 предназначено для отображения столбцов из выбранной книги в виде раскрывающегося списка. Поле 3 — это список столбцов, которые следует удалить из рабочей книги.
Как это работает?
Процедура p_fpick позволит пользователю просматривать и выбирать файлы Excel. Как только будет выбран файл Excel, сценарий будет считывать имена столбцов из Sheet1, и эти имена отображаются в виде раскрывающегося списка. Процедура «Add_Column» позволит пользователю добавить имя выбранного столбца из раскрывающегося списка, чтобы добавить его в список столбцов, которые необходимо удалить. Последняя процедура «Delete_Columns» откроет книгу, указанную в поле «Выберите книгу», и удалит все выбранные столбцы. После удаления рабочая книга будет сохранена и закрыта.
Sub P_fpick() Dim v_fd As Office.FileDialog Установить v_fd = Application.FileDialog(msoFileDialogFilePicker) С v_fd .AllowMultiSelect = False .Title = «Выберите книгу Excel» .Filters.Clear .Filters.Add «Excel», «*. xls*" Если .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 В lc Если v_sheets = "" Тогда v_sheets = wb.Sheets(1).Cells(1, c).Value Иначе 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").Значение = "" Затем Диапазон("Q4").Значение = Диапазон("N4").Значение Иначе Диапазон("Q4").Значение = Диапазон("Q4").Значение & "," & Диапазон ("N4"). Значение 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 ) Затем 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.
Оставьте комментарий