Я выполняю поиск и замену целой пачки файлов Excel (чтобы обновить некоторые ссылки, которые были перемещены)
Я хочу отследить, в какие файлы были внесены изменения, однако результат замены всегда верен, независимо от того, был ли требуемый текст. Найти как это:
$worksheet.UsedRange.Find($Text)
либо возвратит ноль, если искомый текст не существует, либо объект, если он существует, но это существенная дополнительная обработка, которую я предпочел бы удалить, учитывая, что у меня есть около 1,2 миллиона файлов для проверки.
Вот мой код замены:
$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
}
}
}