本帖最后由 Batcher 于 2023-11-14 16:59 编辑
场景1:把当前目录下多个Excel文件里面的图片全部删除。
功能:
支持同时处理xls和xlsx文件类型。
支持一个Excel文件里面包含多个Sheet的情况。
使用方法:
以下代码保存为 DeleteExcelPic1.bat
把它和待处理的Excel文件放在同一个目录下。测试代码之前注意做好文件备份。
不需要拖放,直接双击执行 DeleteExcelPic1.bat
[Asm] 纯文本查看 复制代码 # & 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
[Asm] 纯文本查看 复制代码 # & 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() |