如何批量刪除多個 Excel 工作簿中的列

立即分享:

人們在 Excel 工作簿中保存機密數據是很常見的。 當這些工作簿必須與其他同事或朋友共享時,手動刪除是唯一可用的選項。 但是,通過本文,您將了解如何從多個工作簿中快速刪除機密列或不需要的列。

立即下載

如果你想tart盡快使用該軟件,那麼您可以:

立即下載軟件

否則,如果要DIY,可以閱讀以下內容。

讓我們準備GUI

如圖所示,將 Sheet 1 重命名為“ControlPanel”。 使用形狀,我們將在此工作表上添加按鈕,使其顯示為該工具的 GUI(圖形用戶界面)。 我們需要此 GUI 上的三個字段。 Field1 是顯示用戶選擇的工作簿。 字段 2 用於將所選工作簿中的列顯示為下拉列表。 字段 3 是應從工作簿中刪除的列的列表。準備GUI

如何運作?

VBA代碼過程 p_fpick 將允許用戶瀏覽和選擇 Excel 文件。 一旦選擇了 Excel 文件,腳本就會從 Sheet1 中讀取列名稱,這些名稱將顯示為下拉列表。 過程“Add_Column”將允許用戶從下拉列表中添加選定的列名稱以添加到必須刪除的列列表中。 最後一個過程“Delete_Columns”將打開列在“選擇工作簿”字段下的工作簿,並刪除所有選定的列。 刪除後,工作簿將被保存並關閉。

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

調整它

截至目前,此腳本僅處理一個工作簿。 但是使用最後使用的行方法,您可以使宏以批處理模式處理多個工作簿。 但是,該腳本無法打開 損壞的Excel 工作簿。

作者簡介:

Nick Vipond是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 單詞恢復 和Outlook恢復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM.

立即分享:

評論被關閉。