Det er meget almindeligt at se folk gemme fortrolige data i Excel-projektmapper. Når disse projektmapper skal deles med andre kolleger eller venner, er manuel sletning den eneste tilgængelige mulighed. Men med denne artikel lærer du, hvordan du hurtigt sletter fortrolige kolonner eller uønskede kolonner fra flere projektmapper.
Hent nu
Hvis du vil begynde at bruge softwaren så hurtigt som muligt, kan du:
Ellers kan du læse indholdet nedenfor, hvis du vil gøre det selv.
Lad os forberede GUI
Som vist på billedet skal du omdøbe ark 1 til “ControlPanel”. Ved hjælp af figurer tilføjede vi knapper på dette ark for at få det til at vises som GUI (grafisk brugergrænseflade) til dette værktøj. Vi har brug for tre felter på denne GUI. Felt1 skal vise den projektmappe, der er valgt af brugeren. Felt 2 er at vise kolonner fra den valgte projektmappe som rullemenu. Felt 3 er en liste over kolonner, der skal fjernes fra projektmappen.
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
Tilpas det
Fra nu af håndterer dette script kun en projektmappe. Men ved hjælp af den sidst anvendte række-metode kan du få makroen til at håndtere flere projektmapper i en batch-tilstand. Imidlertid kan scriptet ikke åbne en korrupt Excel projektmappe.
Forfatter Introduktion:
Nick Vipond er en datagendannelsesekspert i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder ordgendannelse og Outlook Outlook-softwareprodukter. For mere information besøg www.datanumen.com .