Макрос для сортировки документов

Автор OOKapitan, 18 января 2018, 14:40

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

OOKapitan

      Здравствуйте снова, уважаемые Гуру.
     Мне каждый месяц присылают файлы вида как в приложении (только в оригинале все колонки заполнены, и количество строк может быть разное: как 5 строк, так и 105 и больше. Количество столбцов постоянно. Расположение таблицы также постоянно). Можно ли сделать макрос, который будет лежать в той же папке, что и эти файлы, и будет сортировать каждый файл по столбцу D (самому левому столбцу с четырёхзначными числами). Наподобие того макроса, который мне сделали для печати файлов (в этой теме: http://forumooo.ru/index.php/topic,6509.60.html, в посте http://forumooo.ru/index.php/topic,6509.60/msg,42974.html). Делать руками невозможно - там более 40 файлов. Помогите, пожалуйста.

bigor

#1
"Я его слепила из того что было ..." :)

Последнюю  строку области для сортировки определяет как последнюю заполненную на листе минус 16 строк (так в примере). Если у остальных файлов не так, то надо думать. Например искать первую пустую строку после d13
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Rafik

#2
Насчет нахождения конца сортируемого диапазона всё просто. Определяем адрес последней занятой ячейки и в цикле "пока не появился номер пп" убавляем индекс последней строки. Как только в колонке В появилось значение больше 0, так и прекращаем убавлять индекс строки. Например, вот так:
nEnd_stro = индекс_посл_строки
Do while oSheet.getCellByPosition(1,aEnd_stro).Value =0
 nEnd_stro = nEnd_stro - 1
Loop

Чтобы найти именно строку с №пп, а не споткнуться на нумерованных строках подвала, надо будет придумать ещё какое-то условие для продолжения цикла. Например, проверять на наличие символа "точка" в строке. Если есть точка, то цикл продолжаем.

Основная засада здесь - это куча объединенных ячеек. Если мне не изменяет память, то сортировка в ЛО не дружит с таблицами, имеющими объединенные ячейки. Насчёт ОО не могу сказать что и как, т.к. не пользуюсь им.


OOKapitan

Цитата: Rafik от 19 января 2018, 05:16сортировка в ЛО не дружит с таблицами, имеющими объединенные ячейки
В ОО также. Макрос от Bigor будет работать?

bigor

в ЛО работает с твоей таблицей примером, в ОО не пробовал
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Bigor,
Сейчас проверил Ваш макрос на нескольких файлах - вроде работает. Огромнейшее спасибо.

OOKapitan

Цитата: Bigor от 18 января 2018, 18:04последнюю заполненную на листе минус 16 строк (так в примере)
К стати, итог остаётся внизу таблицы, хотя строк вместе с ним под таблицей 17. Но мне как раз и не нужно, чтобы итог перемещался.

bigor

Там хитрая математика :) из-за того счет начинается с нуля
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Цитата: Bigor от 19 января 2018, 12:13Там хитрая математика  из-за того счет начинается с нуля
Огромнейшее спасибо.
:beer: :beer: :beer: :beer: :beer: