Batcher 发表于 2023-11-14 16:32

BAT调用PowerShell删除Excel文件里的所有图片

本帖最后由 Batcher 于 2023-11-14 16:59 编辑

场景1:把当前目录下多个Excel文件里面的图片全部删除。

功能:
支持同时处理xls和xlsx文件类型。
支持一个Excel文件里面包含多个Sheet的情况。

使用方法:
以下代码保存为 DeleteExcelPic1.bat
把它和待处理的Excel文件放在同一个目录下。测试代码之前注意做好文件备份。
不需要拖放,直接双击执行 DeleteExcelPic1.bat

# & cls & @cd /d "%~dp0" & powershell "Get-Content '%~0' | Out-String | Invoke-Expression " & exit /b
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $false
Get-ChildItem -Filter *.xls -File | ForEach-Object {
    $_.FullName
    $ThisWorkbook = $objExcel.Workbooks.Open($_.FullName)
    foreach ($WS in $ThisWorkbook.Worksheets) {
      $WS.Name
      $ThisWorksheet = $ThisWorkbook.Sheets.Item($WS.Name)
      $PictureGroup = $ThisWorksheet.Pictures()
      foreach ($ThisPicture in $PictureGroup) {
            $ThisPicture.Delete()
      }
    }
    $ThisWorkbook.Save()
    $ThisWorkbook.Close()
}
$objExcel.Quit()

场景2:把指定目录下多个Excel文件里面的图片全部删除,另存到一个新的文件夹。

功能:
支持同时处理xls和xlsx文件类型。
支持一个Excel文件里面包含多个Sheet的情况。

使用方法:
以下代码保存为 DeleteExcelPic2.bat 把它放在任意目录下。
假设待处理的Excel文件在 C:\Test\From 文件夹下,处理完成之后的文件另存到 C:\Test\To 文件夹下。
不需要拖放,直接双击执行 DeleteExcelPic2.bat

# & cls & @cd /d "%~dp0" & powershell "Get-Content '%~0' | Out-String | Invoke-Expression " & exit /b
$OldFolder = "C:\Test\From"
$NewFolder = "C:\Test\To"
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $false
Get-ChildItem -Path $OldFolder -Filter *.xls -File | ForEach-Object {
    $NewName = $NewFolder + "\" + $_.Name
    $_.FullName
    $ThisWorkbook = $objExcel.Workbooks.Open($_.FullName)
    foreach ($WS in $ThisWorkbook.Worksheets) {
      $WS.Name
      $ThisWorksheet = $ThisWorkbook.Sheets.Item($WS.Name)
      $PictureGroup = $ThisWorksheet.Pictures()
      foreach ($ThisPicture in $PictureGroup) {
            $ThisPicture.Delete()
      }
    }
    $ThisWorkbook.SaveAs($NewName)
    $ThisWorkbook.Close()
}
$objExcel.Quit()

Bingo2018 发表于 2023-11-14 18:18

请教一个问题,有没有快速出来Excel里面的所有图片自动成影印模式,试过用VBA实现不了,不知道大佬有没办法呢

mzq2mmd 发表于 2023-11-14 19:05

ming_2794 发表于 2023-11-14 20:49

学习了,感谢分享!{:1_919:}

azisyy 发表于 2023-11-15 13:20

挺好的,又学会一招,十分感谢楼主。
页: [1]
查看完整版本: BAT调用PowerShell删除Excel文件里的所有图片