Så här grupperar du radering av kolumner i flera Excel-arbetsböcker

Det är mycket vanligt att människor sparar konfidentiella data i Excel-arbetsböcker. När dessa arbetsböcker måste delas med andra kollegor eller vänner är manuell radering det enda tillgängliga alternativet. Men med den här artikeln lär du dig hur du snabbt tar bort konfidentiella kolumner eller oönskade kolumner från flera arbetsböcker.

Hämta hem nu

Om du vill börja använda programvaran så snart som möjligt kan du:

Ladda ner programvaran nu

Annars kan du läsa innehållet nedan om du vill göra det själv.

Låt oss förbereda GUI

Såsom visas på bilden, byt namn på Ark 1 till “ControlPanel”. Med hjälp av former lägger vi till knappar på det här arket så att det visas som GUI (grafiskt användargränssnitt) för detta verktyg. Vi behöver tre fält på detta GUI. Fält1 är att visa den arbetsbok som användaren har valt. Fält 2 är att visa kolumner från den valda arbetsboken som rullgardinsmeny. Fält 3 är en lista över kolumner som ska tas bort från arbetsboken.Förbered GUI

Hur fungerar det?

VBA-kodProceduren p_fpick låter användaren bläddra och välja Excel-filer. Så snart en Excel-fil har valts läser manuset kolumnnamn från Sheet1 och dessa namn visas som rullgardinsmeny. Proceduren "Add_Column" gör det möjligt för användaren att lägga till det valda kolumnnamnet från rullgardinsmenyn för att lägga till listan över kolumner som måste raderas. Den sista proceduren "Delete_Column" öppnar arbetsboken som listades under fältet "Select the workbook" och tar bort alla valda kolumner. Efter borttagning sparades och stängdes arbetsboken.

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

Justera det

Från och med nu hanterar detta skript bara en arbetsbok. Men med den senast använda radmetoden kan du få makrot att hantera flera arbetsböcker i ett batch-läge. Skriptet kan dock inte öppna en korrupt Excel arbetsbok.

Författarintroduktion:

Nick Vipond är en dataåterställningsexpert i DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive ordåterställning och programvaruprodukter för återställningsprogram. För mer information besök www.datanumen.com.

Kommentarer är stängda.