一次检查多个 Excel sheet

Inspecting multiple Excel sheet at once

我得到了一个包含大约 200 个 Excel 电子表格的文件夹,我需要打开其中的每一个并“检查”它们是否存在隐藏的行或工作表。有没有一种方法可以做到这一点而不必单独打开每个文件?

使用 Powershell,您可以安装 Doug Finke 的 ImportExcel Powershell 模块

Find-Module ImportExcel | Install-Module

(此处有 ImportExcel 帮助 'https://www.powershellgallery.com/packages/ImportExcel/')

然后您可以使用 Get-ExcelSheetInfo 选项检查 .xlsx 和 .xlsm 文件中的隐藏工作表

$FolderPath = 'DriveLetter:\path to file'
$Files = Get-ChildItem -Path $FolderPath -Include *.xlsx, *.xlsm -File -Name
$array = @()
ForEach($File in $Files){ 
$row = Get-ExcelSheetInfo $File 
$array = $array + $row
}
$array | Out-GridView

对于 .xls 文件,您需要先转换为 .xlsx,有许多工具和脚本可免费下载。

打开一个新的 Excel 文件,在那里打开 VBA 编辑器,“插入”->“模块”,将以下代码粘贴到那里:

Sub search_for_hidden_sheet_or_cells()
Dim oFSO As Object: Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim f As Object
Dim wb As Workbook
Dim ws As Worksheet
Dim c As Range: Set c = ThisWorkbook.Sheets(1).Cells(1, 1)
Dim r As Range

For Each f In oFSO.GetFolder("C:\Temp\test").Files
  If f.Name Like "*.xls*" Then
    Set wb = Application.Workbooks.Open(f)
    For Each ws In wb.Worksheets
      If ws.Visible = xlSheetHidden Then
        c = "Hidden sheet """ & ws.Name & """ in wb """ & wb.Name & """"
        Set c = c.Offset(1)
      ElseIf ws.Visible = xlSheetVeryHidden Then
        c = "Very hidden sheet """ & ws.Name & """ in wb """ & wb.Name & """"
        Set c = c.Offset(1)
      Else
        For Each r In ws.UsedRange.Rows
          If r.Hidden Then
            c = "Hidden row " & r.Row & " in sheet """ & ws.Name & """ in wb """ & wb.Name & """"
            Set c = c.Offset(1)
          End If
        Next
        For Each r In ws.UsedRange.Columns
          If r.Hidden Then
            c = "Hidden col " & Split(r.Address, "$")(3) & " in sheet """ & ws.Name & """ in wb """ & wb.Name & """"
            Set c = c.Offset(1)
          End If
        Next
      End If
    Next
    wb.Close
  End If
Next
End Sub

而不是"C:\Temp\test"输入你的文件夹地址。

此代码将找到隐藏在您的 Excel 文件中的所有工作表、列和行。如果有很多文件,您只需等到该过程完成即可。我测试后的结果如下所示: