Kako paketno izbrisati stolpce v več Excelovih delovnih zvezkih

Skupna raba zdaj:

Zelo pogosto je videti ljudi, ki shranjujejo zaupne podatke v Excelovih delovnih zvezkih. Ko je treba te delovne zvezke dati v skupno rabo z drugimi sodelavci ali prijatelji, je ročno brisanje edina možnost, ki je na voljo. Vendar se boste v tem članku naučili, kako hitro izbrisati zaupne stolpce ali neželene stolpce iz več delovnih zvezkov.

Prenesi zdaj

Če želite start Če želite programsko opremo uporabiti čim prej, lahko:

Prenesite programsko opremo zdaj

V nasprotnem primeru, če želite sami, lahko preberete spodnjo vsebino.

Pripravimo GUI

Kot je prikazano na sliki, preimenujte list 1 v »Nadzorna plošča«. Z uporabo oblik bi na ta list dodali gumbe, da bi bil prikazan kot GUI (grafični uporabniški vmesnik) za to orodje. V tem GUI potrebujemo tri polja. Polje1 je za prikaz delovnega zvezka, ki ga izbere uporabnik. Polje 2 je namenjeno prikazu stolpcev iz izbranega delovnega zvezka kot spustnega menija. Polje 3 je seznam stolpcev, ki jih je treba odstraniti iz delovnega zvezka.Pripravite GUI

Kako deluje?

Koda VBAPostopek p_fpick bi uporabniku omogočil brskanje in izbiro Excelovih datotek. Takoj ko je izbrana Excelova datoteka, bi skript prebral imena stolpcev iz Sheet1 in ta imena so prikazana kot spustni meni. Postopek “Add_Column” bo uporabniku omogočil dodajanje izbranega imena stolpca iz spustnega menija za dodajanje na seznam stolpcev, ki jih je treba izbrisati. Končni postopek »Delete_Columns« bi odprl delovni zvezek, ki je bil naveden pod poljem »Izberite delovni zvezek«, in odstranil vse izbrane stolpce. Po izbrisu bi bil delovni zvezek shranjen in zaprt.

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

Potegnite ga

Od zdaj ta skript obravnava samo en delovni zvezek. Toda z metodo zadnje uporabljene vrstice lahko makro obravnava več delovnih zvezkov v paketnem načinu. Vendar pa skript ne more odpreti a pokvarjen Excel delovni zvezek.

Uvod avtorja:

Nick Vipond je strokovnjak za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z obnovitev besed in obeti za obnovitev programske opreme. Za več informacij obiščite www.datanumen.com.

Skupna raba zdaj:

Komentarji so zaprti.