Як пакетно видаляти стовпці в декількох книгах Excel

Поділитися зараз:

Дуже часто можна спостерігати, як люди зберігають конфіденційні дані у книгах Excel. Коли цими книгами потрібно ділитися з іншими колегами чи друзями, єдиним доступним варіантом є видалення вручну. Однак із цієї статті ви дізнаєтесь, як швидко видалити конфіденційні стовпці або небажані стовпці з декількох книг.

Завантажити зараз

Якщо ви хочете почати користуватися програмним забезпеченням якомога швидше, ви можете:

Завантажте програмне забезпечення зараз

В іншому випадку, якщо ви хочете зробити самостійно, ви можете прочитати вміст нижче.

Давайте підготуємо графічний інтерфейс

Як показано на зображенні, перейменуйте Аркуш 1 як “ControlPanel”. Використовуючи фігури, ми додали б кнопки на цьому аркуші, щоб він відображався як графічний інтерфейс (графічний інтерфейс користувача) для цього інструменту. На цьому графічному інтерфейсі нам потрібні три поля. Поле1 - для відображення книги, яку обрав користувач. Поле 2 відображає стовпці з вибраної книги як спадні. Поле 3 - це список стовпців, які слід видалити з книги.Підготуйте графічний інтерфейс

Як це працює?

Код VBAПроцедура p_fpick дозволить користувачеві переглядати та вибирати файли Excel. Як тільки файл Excel буде вибрано, скрипт буде читати імена стовпців з Аркуша1, і ці імена відображатимуться як випадаючі. Процедура “Add_Column” дозволить користувачеві додати вибране ім’я стовпця зі спадного меню, щоб додати його до списку стовпців, які потрібно видалити. Остаточна процедура «Видалити_столбці» відкриє книгу, яка була вказана в полі «Вибір книги», і видалить усі вибрані стовпці. Після видалення книгу буде збережено та закрито.

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.

Поділитися зараз:

Коментарі закриті.