È 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:
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.
Cosa puoi fare con noi?

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.