Paano Mag-batch ng Tanggalin ang Mga Haligi sa Maramihang Mga Excel Workbook

Ipamahagi ngayon:

Napakakaraniwan na makita ang mga tao na nagse-save ng kumpidensyal na data sa mga workbook ng Excel. Kapag ang mga workbook na ito ay kailangang ibahagi sa iba pang mga kasamahan o kaibigan, ang manu-manong pagtanggal ay ang magagamit na pagpipilian lamang. Gayunpaman, sa artikulong ito, malalaman mo kung paano mabilis na matanggal ang mga kumpidensyal na haligi o mga hindi ginustong mga haligi mula sa maraming mga workbook.

Download na Ngayon

Kung gusto mong simulan ang paggamit ng software sa lalong madaling panahon, maaari mong:

I-download ang Software Ngayon

Kung hindi man, kung nais mong DIY, maaari mong basahin ang mga nilalaman sa ibaba.

Ihanda na natin ang GUI

Tulad ng ipinakita sa imahe, palitan ang pangalan ng Sheet 1 bilang "ControlPanel". Gamit ang mga hugis, magdaragdag kami ng Mga Pindutan sa sheet na ito upang maipakita ito bilang GUI (Graphical User Interface) para sa tool na ito. Kailangan namin ng tatlong mga patlang sa GUI na ito. Ang Field1 ay upang ipakita ang workbook na napili ng gumagamit. Ang Patlang 2 ay upang ipakita ang mga haligi mula sa napiling workbook bilang drop down. Ang Patlang 3 ay isang listahan ng mga haligi na dapat alisin mula sa workbook.Ihanda Ang GUI

Paano ito gumagana?

VBA codePapayagan ng p_fpick na pamamaraan ang gumagamit na mag-browse at pumili ng mga Excel file. Kaagad na napili ang isang file na Excel, babasahin ng script ang mga pangalan ng haligi mula sa Sheet1 at ang mga pangalang ito ay ipinapakita bilang drop down. Papayagan ng pamamaraang "Add_Column" ang gumagamit na idagdag ang napiling pangalan ng haligi mula sa drop down upang idagdag sa listahan ng mga haligi na dapat tanggalin. Ang pangwakas na pamamaraan na "Delete_Columns" ay magbubukas sa workbook na nakalista sa ilalim ng patlang na "Piliin ang workbook" at aalisin ang lahat ng napiling mga haligi. Pagkatapos ng pagtanggal, ang workbook ay nai-save at sarado.

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

Sabunutan ito

Tulad ng ngayon, ang script na ito ay humahawak lamang ng isang workbook. Ngunit gamit ang huling ginamit na pamamaraan ng hilera, maaari mong gawin ang macro na hawakan ang maraming mga workbook sa isang mode ng batch. Gayunpaman, hindi mabubuksan ang script a sira ang Excel workbook.

Panimula ng May-akda:

Si Nick Vipond ay isang dalubhasa sa pagbawi ng data sa DataNumen, Inc., na pinuno ng mundo sa mga teknolohiya sa pagbawi ng data, kasama ang pagbawi ng salita at pananaw sa mga produkto ng software sa pagbawi. Para sa karagdagang impormasyon pagbisita www.datanumen. Sa.

Ipamahagi ngayon:

Mga komento ay sarado.