여러 Excel 통합 문서에서 열을 일괄 삭제하는 방법

지금 공유 :

사람들이 Excel 통합 문서에 기밀 데이터를 저장하는 것은 매우 일반적입니다. 이러한 통합 문서를 다른 동료 나 친구와 공유해야하는 경우 수동 삭제가 사용 가능한 유일한 옵션입니다. 그러나이 문서에서는 여러 통합 문서에서 기밀 열이나 원하지 않는 열을 빠르게 삭제하는 방법을 알아 봅니다.

다운로드

소프트웨어를 최대한 빨리 사용하고 싶으시다면 다음 방법을 이용하실 수 있습니다.

지금 소프트웨어 다운로드

그렇지 않고 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.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. 단어 복구 그리고 전망 회복 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM.

지금 공유 :

댓글이 닫혀있다.