#excel #powershell #powershell-5.0
#excel #powershell #powershell-5.0
Вопрос:
Я не смог заставить работать эту простую команду $Range.Find($SearchString,LookAt:=xlWhole)
Он возвращает синтаксическую ошибку. Без LookAt
работает нормально, но мне нужно точное совпадение
Комментарии:
1. К какому типу данных относится диапазон переменных?
2. диапазон excel…. ‘$range = $ws.range(«B1»).Вся колонка’
3. Кажется, что запись ‘$ Search = $ Range. Find($searchString,[Type]::Отсутствует,[Type]::Отсутствует,1)’ ошибка исчезает
Ответ №1:
PowerShell не использует синтаксис VBA. Вот почему вы получаете ошибку. Кроме того, вам необходимо определить параметры, которые вы пропускаете, вместо их значений по умолчанию в ваших вызовах метода Excel. Это делается с помощью [Type]::Missing
, как вы обнаружили.
Что касается использования перечисления для поиска, то из простых вещей, которые вы можете сделать, это использовать целочисленное представление. 1 в данном случае для xlWhole
.
Если вы не хотите использовать magic number, вы можете определить свои собственные константы с помощью простой переменной
$xlWhole = 1
В некотором смысле вы можете использовать фактическую константу, если добавите сборку, содержащую эти константы.
Add-Type -Assembly 'Microsoft.Office.Interop.Excel'
$Range.Find($SearchString,[Type]::Missing,[Type]::Missing,[Microsoft.Office.Interop.Excel.XlLookAt]::xlWhole)