Я нашел здесь немного кода при переполнении стека и добавил несколько бит. Он работает как шарм с текущими настройками ... На Sheet1 в столбцах от A до D.
Я бы хотел, чтобы он работал на всех листах в книге. Но я не могу думать о том, что работает.
Это мой код, который работает на Sheet1:
$replacecount = 0
$file = "H:\test4.xlsx"
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false
$Workbook = $Excel.workbooks.open($file)
$SearchString = "2019-AUG"
$replacestring = "2020-MAY"
$Worksheet = $Workbook.Worksheets.Item(1)
$Range = $Worksheet.Range("A1:D1").EntireColumn
write-output $worksheet.index
$Search = $Range.find($SearchString)
if ($search -ne $null) {
$FirstAddress = $Search.Address
do {
$search.Value() = $Search.value() -Replace $SearchString, $replacestring
$search = $Range.FindNext($search)
$replacecount++
} while ($search -ne $null -and $search.Address -ne $FirstAddress)
}
Write-output "status Close"
Write-output $replacecount
$WorkBook.Save()
$WorkBook.Close()
Я думаю, что мне следует использовать FOREACH (лист на листе), но когда я пытаюсь установить диапазон внутри l oop Получаю ошибку