Es muy común ver personas guardando datos confidenciales en libros de Excel. Cuando estos libros de trabajo deben compartirse con otros colegas o amigos, la eliminación manual es la única opción disponible. Sin embargo, con este artículo, aprenderá a eliminar rápidamente columnas confidenciales o columnas no deseadas de varios libros de trabajo.
Descargar Ahora
Si quieres starPara utilizar el software lo antes posible, puede:
De lo contrario, si desea hacer bricolaje, puede leer el contenido a continuación.
Preparemos la GUI
Como se muestra en la imagen, cambie el nombre de la Hoja 1 como “Panel de control”. Usando formas, agregaríamos botones en esta hoja para que aparezca como GUI (interfaz gráfica de usuario) para esta herramienta. Necesitamos tres campos en esta GUI. Field1 es mostrar el libro de trabajo seleccionado por el usuario. El campo 2 es mostrar columnas del libro de trabajo seleccionado como menú desplegable. El campo 3 es una lista de columnas que deben eliminarse del libro de trabajo.
¿Cómo funciona?

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
Retocarlo
A partir de ahora, este script maneja solo un libro de trabajo. Pero utilizando el último método de fila utilizado, puede hacer que la macro maneje varios libros de trabajo en modo por lotes. Sin embargo, el script no puede abrir un Excel corrupto libro de trabajo.
Introducción del autor:
Nick Vipond es un experto en recuperación de datos en DataNumen, Inc., que es el líder mundial en tecnologías de recuperación de datos, incluyendo recuperación de palabras y productos de software de recuperación de Outlook. Para más información visite www.datanumen.com.