Метод поиска содержит синтаксическую ошибку при использовании LookAt

#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)‌​