Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

25 Сентябрь 2018, 16:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 3 4 5 6 7 8 »   Вниз
  Печать  
Автор Тема: Выполнить поиск на странице макросом  (Прочитано 5102 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
OOKapitan
Форумчанин
***
Offline Offline

Сообщений: 353


« Стартовое сообщение: 7 Февраль 2018, 14:02 »

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

* ПРИМЕР_ПОИСКА.ods (13.15 Кб - загружено 3 раз.)
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 546


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 7 Февраль 2018, 14:29 »

...мне важно увидеть, как выглядят строки кода, отвечающие за поиск по файлу
Сначала ищите по нашему форуму, на главной странице форума в окно поиска забейте: createReplaceDescriptor — там и будут примеры Смеющийся
Записан

Rafik
Форумчанин
***
Offline Offline

Сообщений: 68


« Ответ #2: 7 Февраль 2018, 15:25 »

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

Сообщений: 353


« Ответ #3: 7 Февраль 2018, 17:42 »

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

Пол: Мужской
Сообщений: 2 546


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #4: 7 Февраль 2018, 19:32 »

А как получить номер строки, в которой нашлось искомое?
Список адресов ячеек с искомым (одной строкой):
Код:
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
Форумчанин
***
Offline Offline

Сообщений: 353


« Ответ #5: 9 Февраль 2018, 13:22 »

Список адресов ячеек с искомым
А как получить номер строки этой ячейки с искомым. Поиском по инету нашёл только как обратиться к конкретной ячейке с заданными цифрами номером строки и столбца. А как этот номер получить, имея адрес ячейки? Помогите, пожалуйста.
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 913


« Ответ #6: 9 Февраль 2018, 14:37 »

Код:
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
Форумчанин
***
Offline Offline

Сообщений: 913


« Ответ #7: 9 Февраль 2018, 14:41 »

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

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 306


« Ответ #8: 9 Февраль 2018, 14:59 »

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

s=oFind.RangeAddressesAsString

а потом, уже :
1. Если нашли только одну ячейку то просто
Код:
msgbox "Столбец: " & oFind.RangeAddresses(0).StartColumn & " Строка: " & oFind.RangeAddresses(0).StartRow
2. Если несколько то тоже самое в цикле Улыбка
« Последнее редактирование: 9 Февраль 2018, 15:06 от Bigor » Записан
OOKapitan
Форумчанин
***
Offline Offline

Сообщений: 353


« Ответ #9: 9 Февраль 2018, 15:00 »

Постом выше я демонстрирую другой подход к автоматизации OpenOffice
А как это же записать на Starbasic?
Записан
OOKapitan
Форумчанин
***
Offline Offline

Сообщений: 353


« Ответ #10: 9 Февраль 2018, 15:01 »

1. Если нашли только одну ячейку то просто
Огромнейшее спасибо.
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 913


« Ответ #11: 9 Февраль 2018, 15:23 »

Постом выше я демонстрирую другой подход к автоматизации OpenOffice
А как это же записать на Starbasic?

Это уже на Starbasic (он умеет в LO работать на двух диалектах одновременно) - нужно просто скопипастить, сохранить и запустить: Ctrl+A, Ctrl+C, Alt+Tab, Ctrl+V, Ctrl+S, F5
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
OOKapitan
Форумчанин
***
Offline Offline

Сообщений: 353


« Ответ #12: 9 Февраль 2018, 15:42 »

Это уже на Starbasic
Спасибо.
Записан
OOKapitan
Форумчанин
***
Offline Offline

Сообщений: 353


« Ответ #13: 9 Февраль 2018, 16:15 »

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

Сообщений: 353


« Ответ #14: 9 Февраль 2018, 16:54 »

И какое значение принимает переменная oFind, если искомое не найдено? С этим уже разобрался.
« Последнее редактирование: 9 Февраль 2018, 17:00 от OOKapitan » Записан
Страниц: 1 2 3 4 5 6 7 8 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!