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?
Fremgangsmåten p_fpick ville tillate brukeren å bla gjennom og velge Excel-filer. Så snart en Excel-fil er valgt, vil skriptet lese kolonnenavn fra Ark1, og disse navnene vises som rullegardinmeny. Prosedyren "Add_Column" vil tillate brukeren å legge til det valgte kolonnenavnet fra rullegardinmenyen for å legge til listen over kolonner som må slettes. Den siste prosedyren "Delete_Columns" ville åpne arbeidsboken som var oppført under feltet "Velg arbeidsbok" og ville fjerne alle valgte kolonner. Etter sletting vil arbeidsboken bli lagret og lukket.
Sub P_fpick() Dim v_fd As Office.FileDialog Set v_fd = Application.FileDialog(msoFileDialogFilePicker) With v_fd .AllowMultiSelect = False .Title = "Vennligst velg Excel-arbeidsboken" .Filters.Clear ".Filters.Add. 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").Verdi) Dim v_sheets As String v_sheets = "" Dim lc As Long lc = wb.Sheets(1).Range("AZ1").End(xlToLeft).Kolonne Dim c As Long For c = 1 To lc If v_sheets = "" Da 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 Add_Column(") Q4"). Verdi = "" Deretter Range("Q4"). Verdi = Range("N4"). Value Else Range("Q4"). Verdi = Range("Q4"). Verdi & "," & 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" ).Tekst) 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" ).Tekst, ","") 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) ) Deretter wb.Sheets(1).Columns(c).Slett Shift:=xlToLeft End If Next c Neste 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.