Det er veldig vanlig å se folk som lagrer konfidensielle data i Excel-arbeidsbøker. Når disse arbeidsbøkene må deles med andre kolleger eller venner, er manuell sletting det eneste tilgjengelige alternativet. Men med denne artikkelen vil du lære hvordan du raskt sletter konfidensielle kolonner eller uønskede kolonner fra flere arbeidsbøker.
Last ned nå
Hvis du ønsker å starFor å bruke programvaren så snart som mulig, kan du:
Ellers, hvis du vil gjøre DIY, kan du lese innholdet nedenfor.
La oss forberede GUI
Som vist på bildet, gi nytt navn til ark 1 til "Kontrollpanel". Ved å bruke former, ville vi legge til knapper på dette arket for å få det til å vises som GUI (Graphical User Interface) for dette verktøyet. Vi trenger tre felt på denne GUI. Felt 1 skal vise arbeidsboken som er valgt av brukeren. Felt 2 er å vise kolonner fra den valgte arbeidsboken som rullegardin. Felt 3 er en liste over kolonner som bør fjernes fra arbeidsboken.
Hvordan virker det?

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
Juster det
Per nå håndterer dette skriptet bare én arbeidsbok. Men ved å bruke den sist brukte radmetoden, kan du få makroen til å håndtere flere arbeidsbøker i en batch-modus. Skriptet kan imidlertid ikke åpne en korrupte Excel arbeidsbok.
Forfatterintroduksjon:
Nick Vipond er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert ordgjenoppretting og Outlook-programvareprodukter. For mer informasjon besøk www.datanumen. Med.
