複数のExcelブックの列をバッチ削除する方法

今すぐ共有:

Excelブックに機密データを保存している人を見るのは非常に一般的です。 これらのワークブックを他の同僚や友人と共有する必要がある場合は、手動で削除することが唯一の選択肢です。 ただし、この記事では、複数のブックから機密列または不要な列をすばやく削除する方法を学習します。

ダウンロード

ソフトウェアをできるだけ早く使い始めたい場合は、以下の方法があります。

今すぐソフトウェアをダウンロード

それ以外の場合、DIYをしたい場合は、以下の内容を読むことができます。

GUIを準備しましょう

画像に示すように、シート1の名前を「ControlPanel」に変更します。 図形を使用して、このシートにボタンを追加し、このツールのGUI(グラフィカルユーザーインターフェイス)として表示されるようにします。 このGUIには1つのフィールドが必要です。 Field2は、ユーザーが選択したワークブックを表示するためのものです。 フィールド3は、選択したブックの列をドロップダウンとして表示します。 フィールドXNUMXは、ブックから削除する必要がある列のリストです。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

微調整する

現在のところ、このスクリプトはXNUMXつのブックのみを処理します。 ただし、最後に使用した行メソッドを使用すると、マクロで複数のブックをバッチモードで処理できます。 ただし、スクリプトは開くことができません 破損したExcel ワークブック。

著者紹介:

Nick Vipondは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 単語の回復 と見通し回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com.

今すぐ共有:

コメントは締め切りました。