Как да групирате изтриване на колони в множество работни книги на Excel

Споделете сега:

Много често се срещат хора, които запазват поверителни данни в работни книги на Excel. Когато тези работни книги трябва да се споделят с други колеги или приятели, ръчното изтриване е единствената налична опция. С тази статия обаче ще научите как бързо да изтривате поверителни колони или нежелани колони от множество работни книги.

Свали сега

Ако искате да започнете да използвате софтуера възможно най-скоро, можете да:

Изтеглете софтуера сега

В противен случай, ако искате да си направите сам, можете да прочетете съдържанието по-долу.

Нека подготвим GUI

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

Как работи?

VBA кодПроцедурата p_fpick ще позволи на потребителя да разглежда и избира файлове на Excel. Веднага след като бъде избран файл на Excel, скриптът ще прочете имената на колони от Sheet1 и тези имена се показват като падащи. Процедурата “Add_Column” ще позволи на потребителя да добави името на избраната колона от падащото меню, за да добави към списъка с колони, които трябва да бъдат изтрити. Последната процедура „Delete_Columns“ ще отвори работната книга, която е изброена в полето „Избор на работната книга“ и ще премахне всички избрани колони. След изтриването работната книга ще бъде запазена и затворена.

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.

Споделете сега:

Коментарите са забранени.