Het is heel gebruikelijk dat mensen vertrouwelijke gegevens opslaan in Excel-werkmappen. Wanneer deze werkboeken moeten worden gedeeld met andere collega's of vrienden, is handmatige verwijdering de enige beschikbare optie. In dit artikel leert u echter hoe u snel vertrouwelijke kolommen of ongewenste kolommen uit meerdere werkmappen kunt verwijderen.
Nu downloaden
Als je wilttarOm de software zo snel mogelijk te gebruiken, kunt u:
Anders, als je zelf wilt klussen, kun je de onderstaande inhoud lezen.
Laten we de GUI voorbereiden
Wijzig de naam van Sheet 1 in "ControlPanel", zoals weergegeven in de afbeelding. Met behulp van vormen zouden we knoppen aan dit blad toevoegen om het te laten verschijnen als GUI (Graphical User Interface) voor deze tool. We hebben drie velden nodig op deze GUI. Veld1 is om de werkmap weer te geven die door de gebruiker is geselecteerd. Veld 2 is om kolommen uit de geselecteerde werkmap weer te geven als vervolgkeuzelijst. Veld 3 is een lijst met kolommen die uit de werkmap moeten worden verwijderd.
Hoe werkt het?

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
Pas het aan
Vanaf nu verwerkt dit script slechts één werkmap. Maar als u de laatst gebruikte rijmethode gebruikt, kunt u de macro meerdere werkmappen in een batchmodus laten verwerken. Het script kan echter geen corrupte Excel werkboek.
Auteur Introductie:
Nick Vipond is een data recovery-expert in DataNumen, Inc., de wereldleider in technologieën voor gegevensherstel, waaronder woordherstel en Outlook-herstelsoftwareproducten. Voor meer informatie bezoek www.datanumen.com.