powershell - Powershell excel替换总是返回true
问题描述
我在一大堆excel文件中进行了查找和替换(以更新一些已移动的链接)我想跟踪哪些文件对它们进行了更改,但是无论是否需要文本,替换的结果总是正确在那里。像这样的查找:
$worksheet.UsedRange.Find($Text)
如果正在查找的文本不存在,则返回 null,如果存在,则返回对象,但鉴于我有大约 120 万个文件要检查,我宁愿删除重要的额外处理。这是我的替换代码:
$found=$false
$xlCalculationManual = -4135
$excel = New-Object -comobject Excel.Application
$excel.visible = $false
$excel.AskToUpdateLinks = $false
$excel.DisplayAlerts = $false
$excel.EnableEvents = $false
$workbook=$excel.Workbooks.Open($openfile,0,$false,5,"nopassword","nopassowrd")
$excel.Calculation = $xlCalculationManual
foreach ($worksheet in $workbook.Sheets)
{
foreach ($Text in $FindText)
{
If ($worksheet.UsedRange.replace($Text,$ReplaceText))
{
$found=$true
}
}
}
解决方案
也许试试
$worksheet.UsedRange.replace($Text,$ReplaceText)
If ($?)
代替
If ($worksheet.UsedRange.replace($Text,$ReplaceText))
或者您可以尝试搜索文本,并确认它找到了什么?
在您的 if replace 选项之前,请尝试(我很抱歉,但此代码是推测,可能无法完全修复它。https://msdn.microsoft.com/en-us/vba/excel-vba上有一篇关于此的文章/articles/range-find-method-excel
$confirm = $worksheet.Used.Range.find($text)
if ($confirm -ne $null) {
Echo $true
$worksheet.UsedRange.replace($Text,$ReplaceText)
$confirm = $null
}
else{
echo $false
}
推荐阅读
- angular - NgModel 在 NgFor 循环中没有得到更新
- r - R 中的并行处理: checkForRemoteErrors(val) 中的错误:7 个节点产生错误;第一个错误:未使用的参数(MARGIN = base::quote(2))
- scala - 当条件为真时应用 Scala 窗口函数,否则填充最后一个值
- svelte - 绑定到对象集合
- swiftui - SwiftUI:在更多选项卡中更改导航栏标题?
- npm - 无法运行 gulp 任务
- sql - 如果 B 列中存在'文本,则更新 A 列
- python - /notes/list/ 处的 TemplateSyntaxError 添加需要 2 个参数,提供 1 个
- navigation - 为什么在 SwiftUI 中使用 List 和 Section 导航返回到第一个视图?
- node.js - 在节点中使用 knex 承诺和 pg 时输入错误