Дуже часто можна спостерігати, як люди зберігають конфіденційні дані у книгах Excel. Коли цими книгами потрібно ділитися з іншими колегами чи друзями, єдиним доступним варіантом є видалення вручну. Однак із цієї статті ви дізнаєтесь, як швидко видалити конфіденційні стовпці або небажані стовпці з декількох книг.
Завантажити зараз
Якщо ви хочете почати користуватися програмним забезпеченням якомога швидше, ви можете:
Завантажте програмне забезпечення зараз
В іншому випадку, якщо ви хочете зробити самостійно, ви можете прочитати вміст нижче.
Давайте підготуємо графічний інтерфейс
Як показано на зображенні, перейменуйте Аркуш 1 як “ControlPanel”. Використовуючи фігури, ми додали б кнопки на цьому аркуші, щоб він відображався як графічний інтерфейс (графічний інтерфейс користувача) для цього інструменту. На цьому графічному інтерфейсі нам потрібні три поля. Поле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.