Найти и заменить в Excel с PowerShell - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть столбец с именами компьютеров, однако имена отформатированы как этот домен \ имя компьютера.Обычно в Excel я могу использовать поиск / замену и поиск * \ и заменить пустым, оставляя только имя компьютера.У меня есть сценарий powershell, который находит * \, но он заменяет всю ячейку ничем.Это похоже на поиск любой ячейки, содержащей * \, и замену ее вместо того, чтобы просто оставлять имя компьютера.

$file = "C:\reports\report.xls"
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $true
$Workbok = $Excel.workbooks.open($file)
$Worksheets = $Workbook.worksheets
$Worksheet = $Workbook.Worksheets.Item(1)
$Worksheet = $Workbok.Worksheets.Item(1)
$SearchString = "*\"
$Range = $Worksheet.Range("A1").EntireColumn
$Search = $Range.find($SearchString)
if($search -ne $null){
$FirstAddress = $Search.Address
do{
$Search.value() = ""
$search = $Range.FindNext($search)
}while ($search -ne $null -and $search.Address -ne $FirstAddress)

1 Ответ

0 голосов
/ 13 февраля 2019

В вашем цикле Do-While вы берете значение поиска и устанавливаете его в пустую строку.$Search.value() = "".Если вы возьмете это и измените что-то вроде этого $search.Value() = $Search.value() -replace "^.*\\",'', оно должно работать.Я использовал -replace с некоторым регулярным выражением, чтобы заменить все от обратной косой черты до начала строки.

Немного очистил ваш код, потому что, кажется, у вас были некоторые переменные с ошибками

$file = "C:\reports\report.xls"
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $true
$Workbook = $Excel.workbooks.open($file)
$Worksheet = $Workbook.Worksheets.Item(1)
$SearchString = "*\"
$Range = $Worksheet.Range("A1").EntireColumn
$Search = $Range.find($SearchString)
if ($search -ne $null) {
    $FirstAddress = $Search.Address
    do {
        $search.Value() = $Search.value() -Replace "^.*\\", ''  
        $search = $Range.FindNext($search)
    } while ($search -ne $null -and $search.Address -ne $FirstAddress)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...