Sarjojen poistaminen sarakkeista useissa Excel-työkirjoissa

On hyvin yleistä nähdä ihmisten tallentavan luottamuksellisia tietoja Excel-työkirjoihin. Kun nämä työkirjat on jaettava muille kollegoille tai ystäville, manuaalinen poisto on ainoa käytettävissä oleva vaihtoehto. Tämän artikkelin avulla opit kuitenkin poistamaan luottamukselliset sarakkeet tai ei-toivotut sarakkeet useista työkirjoista.

Lataa nyt

Jos haluat start käyttää ohjelmistoa mahdollisimman pian, voit:

Lataa ohjelmisto nyt

Muussa tapauksessa voit lukea sisällön alla olevasta sisällöstä.

Valmistellaan käyttöliittymä

Nimeä taulukko 1 uudelleen nimellä “ControlPanel” kuvan osoittamalla tavalla. Muotoja käyttämällä lisätään painikkeet tälle taulukolle, jotta se näkyisi tämän työkalun GUI: na (graafinen käyttöliittymä). Tarvitsemme tässä kentässä kolme kenttää. Kenttä1 näyttää käyttäjän valitseman työkirjan. Kentässä 2 näytetään valitun työkirjan sarakkeet pudotusvalikossa. Kenttä 3 on luettelo sarakkeista, jotka tulisi poistaa työkirjasta.Valmista GUI

Miten tämä toimii?

VBA-koodiMenettely p_fpick antaisi käyttäjälle mahdollisuuden selata ja valita Excel-tiedostoja. Heti kun Excel-tiedosto on valittu, komentosarja lukee sarakkeiden nimet Taulukosta1 ja nämä nimet näytetään pudotusvalikossa. Toimenpide "Add_Column" antaa käyttäjän lisätä valitun sarakkeen nimen avattavasta valikosta lisätäksesi sarakkeiden luetteloon, joka on poistettava. Viimeinen toimenpide "Poista_sarakkeet" avaa työkirjan, joka on lueteltu kentässä "Valitse työkirja" ja poistaa kaikki valitut sarakkeet. Poistamisen jälkeen työkirja tallennetaan ja suljetaan.

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

Nipistä sitä

Tällä hetkellä tämä komentosarja käsittelee vain yhtä työkirjaa. Mutta käyttämällä viimeksi käytettyä rivimenetelmää, voit saada makron käsittelemään useita työkirjoja erätilassa. Komentosarja ei kuitenkaan voi avata a korruptoitunut Excel työkirja.

Tekijän esittely:

Nick Vipond on tietojen palauttamisen asiantuntija DataNumen, Inc., joka on maailman johtava tietojen palautustekniikoissa, mukaan lukien sanan palautus ja Outlook-palautusohjelmistotuotteet. Lisätietoja osoitteessa www.datanumen.com.

Kommenttien lisääminen on estetty.