Come eliminare in batch le colonne in più cartelle di lavoro di Excel

Condividi ora:

È molto comune vedere persone che salvano dati riservati nelle cartelle di lavoro di Excel. Quando queste cartelle di lavoro devono essere condivise con altri colleghi o amici, l'eliminazione manuale è l'unica opzione disponibile. Tuttavia, con questo articolo imparerai come eliminare rapidamente colonne riservate o colonne indesiderate da più cartelle di lavoro.

Scarica Ora

Se desideri iniziare a utilizzare il software il prima possibile, puoi:

Scarica subito il software

Altrimenti, se vuoi fare il fai-da-te, puoi leggere i contenuti di seguito.

Prepariamo la GUI

Come mostrato nell'immagine, rinomina il foglio 1 come "ControlPanel". Usando le forme, aggiungeremmo pulsanti su questo foglio per farlo apparire come GUI (Graphical User Interface) per questo strumento. Abbiamo bisogno di tre campi su questa GUI. Field1 serve per visualizzare la cartella di lavoro selezionata dall'utente. Il campo 2 visualizza le colonne della cartella di lavoro selezionata come menu a discesa. Il campo 3 è un elenco di colonne che devono essere rimosse dalla cartella di lavoro.Prepara la GUI

Cosa puoi fare con noi?

Codice VBALa procedura p_fpick consentirebbe all'utente di sfogliare e selezionare i file Excel. Non appena viene selezionato un file Excel, lo script legge i nomi delle colonne dal Foglio1 e questi nomi vengono visualizzati come menu a discesa. La procedura "Add_Column" consentirà all'utente di aggiungere il nome della colonna selezionata dal menu a discesa da aggiungere all'elenco delle colonne che devono essere eliminate. La procedura finale "Delete_Columns" aprirà la cartella di lavoro elencata nel campo "Seleziona la cartella di lavoro" e rimuoverà tutte le colonne selezionate. Dopo l'eliminazione, la cartella di lavoro verrebbe salvata e chiusa.

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

Modificalo

A partire da ora, questo script gestisce solo una cartella di lavoro. Ma utilizzando l'ultimo metodo di riga utilizzato, è possibile fare in modo che la macro gestisca diverse cartelle di lavoro in modalità batch. Tuttavia, lo script non può aprire un file Excel corrotto cartella di lavoro.

Introduzione dell'autore:

Nick Vipond è un esperto di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui recupero delle parole e prodotti software di ripristino di Outlook. Per maggiori informazioni visita www.datanumen.com.

Condividi ora:

I commenti sono chiusi.