Slik sletter du kolonner i flere Excel-arbeidsbøker

Det er veldig vanlig å se folk som lagrer konfidensielle data i Excel-arbeidsbøker. Når disse arbeidsbøkene må deles med andre kolleger eller venner, er manuell sletting det eneste tilgjengelige alternativet. Men med denne artikkelen vil du lære hvordan du raskt sletter konfidensielle kolonner eller uønskede kolonner fra flere arbeidsbøker.

Last ned nå

Hvis du ønsker å starFor å bruke programvaren så snart som mulig, kan du:

Last ned programvaren nå

Ellers, hvis du vil gjøre DIY, kan du lese innholdet nedenfor.

La oss forberede GUI

Som vist på bildet, gi nytt navn til ark 1 til "Kontrollpanel". Ved å bruke former, ville vi legge til knapper på dette arket for å få det til å vises som GUI (Graphical User Interface) for dette verktøyet. Vi trenger tre felt på denne GUI. Felt 1 skal vise arbeidsboken som er valgt av brukeren. Felt 2 er å vise kolonner fra den valgte arbeidsboken som rullegardin. Felt 3 er en liste over kolonner som bør fjernes fra arbeidsboken.Forbered GUI

Hvordan virker det?

VBA kodeFremgangsmåten p_fpick ville tillate brukeren å bla gjennom og velge Excel-filer. Så snart en Excel-fil er valgt, vil skriptet lese kolonnenavn fra Ark1, og disse navnene vises som rullegardinmeny. Prosedyren "Add_Column" vil tillate brukeren å legge til det valgte kolonnenavnet fra rullegardinmenyen for å legge til listen over kolonner som må slettes. Den siste prosedyren "Delete_Columns" ville åpne arbeidsboken som var oppført under feltet "Velg arbeidsbok" og ville fjerne alle valgte kolonner. Etter sletting vil arbeidsboken bli lagret og lukket.

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

Juster det

Per nå håndterer dette skriptet bare én arbeidsbok. Men ved å bruke den sist brukte radmetoden, kan du få makroen til å håndtere flere arbeidsbøker i en batch-modus. Skriptet kan imidlertid ikke åpne en korrupte Excel arbeidsbok.

Forfatterintroduksjon:

Nick Vipond er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert ordgjenoppretting og Outlook-programvareprodukter. For mer informasjon besøk www.datanumen. Med.

Kommentarer er stengt.