Выполнить поиск на странице макросом

Автор OOKapitan, 7 февраля 2018, 14:02

0 Пользователи и 1 гость просматривают эту тему.

OOKapitan

     Здравствуйте.
     Помогите, пожалуйста.
     Сейчас, чтобы что-то найти в файле, я делаю: Правка-Найти и заменить- в поле найти ввожу что надо найти, жму ОК. А как тоже самое сделать макросом? Значение можно сразу задать в макросе - мне важно увидеть, как выглядят строки кода, отвечающие за поиск по файлу. Пример файла прилагаю. Помогите, пожалуйста.

rami

Цитата: OOKapitan от  7 февраля 2018, 12:02...мне важно увидеть, как выглядят строки кода, отвечающие за поиск по файлу
Сначала ищите по нашему форуму, на главной странице форума в окно поиска забейте: createReplaceDescriptor — там и будут примеры ;D

Rafik

Если нужен чисто поиск, без замены, то ищите в форуме createSearchDescriptor
Рекомендую почитать: http://websprav.admin-smolensk.ru/freesoft/freesoft/OpenOffice.org%20Macros%20Explained.Master.pdf
Там много готовых или почти готовых рецептов и толковое изложение.

OOKapitan

Большое спасибо.
А как получить номер строки, в которой нашлось искомое?

rami

Цитата: OOKapitan от  7 февраля 2018, 15:42А как получить номер строки, в которой нашлось искомое?
Список адресов ячеек с искомым (одной строкой):
Sub searcher
Dim desc, oFind, s
oSheet=ThisComponent.CurrentController.ActiveSheet
desc=oSheet.createSearchDescriptor()
desc.SearchRegularExpression=false
desc.SearchString="Строка поиска"   'Что найти
desc.SearchWords=true      'Ячейку целиком
oFind=oSheet.findAll(desc)
s=oFind.RangeAddressesAsString
Print s
End Sub

OOKapitan

Цитата: rami от  7 февраля 2018, 17:32Список адресов ячеек с искомым
А как получить номер строки этой ячейки с искомым. Поиском по инету нашёл только как обратиться к конкретной ячейке с заданными цифрами номером строки и столбца. А как этот номер получить, имея адрес ячейки? Помогите, пожалуйста.

economist


Option VBASupport 1
Option Compatible

Sub FindStrokaPoiska
For each n in Range("A1:Z1000")
If n.value="Строка поиска" then msgbox(n.value & " - в строке " & n.row)
Next n
End sub
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

Постом выше я демонстрирую другой подход к автоматизации OpenOffice|LibreOffice - использование в нем кода VBA. Преимущества: большая краткость, куча инфы и примеров в Нэте (возможно самое большое кол-во информации в Интернете о чем-либо, связанном с программированием), ну и тот же результат.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

bigor

#8
ЦитироватьА как этот номер получить, имея адрес ячейки?

s=oFind.RangeAddressesAsString

а потом, уже :
1. Если нашли только одну ячейку то просто
msgbox "Столбец: " & oFind.RangeAddresses(0).StartColumn & " Строка: " & oFind.RangeAddresses(0).StartRow
2. Если несколько то тоже самое в цикле :)
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Цитата: economist от  9 февраля 2018, 12:41Постом выше я демонстрирую другой подход к автоматизации OpenOffice
А как это же записать на Starbasic?

OOKapitan

Цитата: Bigor от  9 февраля 2018, 12:591. Если нашли только одну ячейку то просто
Огромнейшее спасибо.

economist

Цитата: OOKapitan от  9 февраля 2018, 15:00
Цитата: economist от  9 февраля 2018, 12:41Постом выше я демонстрирую другой подход к автоматизации OpenOffice
А как это же записать на Starbasic?

Это уже на Starbasic (он умеет в LO работать на двух диалектах одновременно) - нужно просто скопипастить, сохранить и запустить: Ctrl+A, Ctrl+C, Alt+Tab, Ctrl+V, Ctrl+S, F5
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...


OOKapitan

   Скажите, пожалуйста, что нужно дописать в коде, чтобы поиск шёл только по видимым строкам? Просто часть строк у меня скрыто.

OOKapitan

#14
И какое значение принимает переменная oFind, если искомое не найдено? С этим уже разобрался.