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

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

12 Декабрь 2017, 05:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 4 »   Вниз
  Печать  
Автор Тема: Копировать с помощью макроса на другой лист  (Прочитано 37339 раз)
0 Пользователей и 1 Гость смотрят эту тему.
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 373


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #30: 21 Январь 2011, 16:15 »

Вот, сколько людей - столько и мнений...
Последнюю строку найти или от текущей клетки вправо выделение растянуть - для меня, например, семечки (знаю, где у Питоньяка нужную цитату дёрнуть)
А вот перебрать все имеющиеся выделения, если их больше одного, да еще и использовать не полностью, а только ячейки из первого столбца выделения... Да проверить, что когда двигаемся вправо эта ячейка была не предпоследней в строке (в смысле, не в самом конце строки - а то ведь ругнется макрос-то)... Нет, сделаю, конечно... Но столько нужно предусмотреть!
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
lyolikfx
Новичок
*
Offline Offline

Расположение: Мамка Украина
Сообщений: 25


« Ответ #31: 21 Январь 2011, 16:19 »

Ув. JohnSUN, несмотря на то что макрос ещё не готов, я уже хочу поставить вам пиво Улыбка
Может, это даже и получится как-то организовать.
Записан
lyolikfx
Новичок
*
Offline Offline

Расположение: Мамка Украина
Сообщений: 25


« Ответ #32: 21 Январь 2011, 16:27 »

Не понял насчет "а потом данные изменились"... Когда изменились и с какого перепугу?
Сформаровал значить список, звонок, "мне то ненадо, надо другое".


Не, всё-таки макрос - наилучший вариант.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 373


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #33: 21 Январь 2011, 16:33 »

Легко! В окне редактирования сообщения есть специальный смайлик!  Всё хорошо

Сформаровал значить список, звонок, "мне то ненадо, надо другое".
А, я испугался, что весь исходный список может поменяться... Это просто: нужные позиции в Исходных отметил, не нужные почистил и готово.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
lyolikfx
Новичок
*
Offline Offline

Расположение: Мамка Украина
Сообщений: 25


« Ответ #34: 21 Январь 2011, 16:41 »

Ех, попробовал, не мое это. Буду ещё искать варианты так, чтоб с макросом, привык я. Но спасибо за участие.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 373


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #35: 21 Январь 2011, 16:44 »

Ты далеко не уходи... Пишем мы его... Сегодня, скорее всего, не закончим, но на днях - обязательно.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
lyolikfx
Новичок
*
Offline Offline

Расположение: Мамка Украина
Сообщений: 25


« Ответ #36: 21 Январь 2011, 17:00 »

...внутрь ему, если мужчина, если же нет - растереть...  Улыбка  правда с качкой у них перебор там, штормы, от вахт не вздохнуть, но человеку за бортом сдесь не дадут утонуть........
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 373


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #37: 22 Январь 2011, 14:57 »

2. Вставлять после (ниже) уже заполненных ранее ячеек.
В этом большая часть трудностей.
Не велика беда... Ну нет в бэйсике конструкции аналогичной VBA'шной .End(xlUp), ну и что?
Я уже цитировал макрос Johnny Rosenberg GetLastUsedRow
Воткнуть эту функцию вместо "B1:C2" в
Код:
Sub Main
ThisComponent.Sheets.getByName("Лист2").getCellRangeByName("B1:C2").setDataArray(ThisComponent.Sheets.getByName("Лист1").getCellRangeByName("A1:B2").DataArray)
End Sub
тоже не сложно. Плохо, что:
1. вызываться в этом случае она будет дважды на каждом копировании (чтобы указать целевой диапазон нужно будет и для StartRow и для EndRow её указать). Впрочем, если копировать не через getDataArray-setDataArray, а как convas предложил, через
Код:
.copyRange (CellAddress, CellRangeAddress)
тогда можно одним вызовом обойтись.
2. строчка станет длиннющей - не читаемая, не отлаживаемая, не исправляемая...
А если еще и текст самой GetLastUsedRow в одну строку растянуть - вообще беда...
Нет, лучше пусть макрос будет из нескольких процедур и функций, пусть он будет хоть из 50 строк, хоть из 100, но строчки будут короткие, ясные для понимания...
Допишу-отлажу, как задумал, покажу.

Я смотрю, пример прайса без макроса еще кто-то скачивал? Тоже не понравилось?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 373


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #38: 24 Январь 2011, 13:19 »

Вообще-то, "обещанного три года ждут", но я управился чуть быстрее  Смеющийся
Но ощущение, что что-то осталось недоделанным, что-то не досмотрел, что-то упустил всё-таки есть.

Получилось довольно-таки многословно, на макрос из одной строки, который был в топикстарте, похоже мало.
Просто насовал в алгоритм пачку "фич", которые вряд ли кому-нибудь когда-нибудь понадобятся для прайс-листа, но могут пригодиться как "code snippets".

На мышь или на горячие клавиши вызовы макросов не вешал, их можно запускать кнопками на листе "Исходные" или по Alt-F11. Или навесить на хоткеи, или вывести на панель...


[вложение удалено Администратором]
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
lyolikfx
Новичок
*
Offline Offline

Расположение: Мамка Украина
Сообщений: 25


« Ответ #39: 24 Январь 2011, 18:04 »

Ув. JohnSUN, весьма вам благодарен, на скорую руку говорю спасибо, а гдето завтра посмотрю и вынесу резолюцию Смеющийся. Ещё раз спасибо.
Записан
lyolikfx
Новичок
*
Offline Offline

Расположение: Мамка Украина
Сообщений: 25


« Ответ #40: 27 Январь 2011, 11:23 »

Вот это да. То что надо. Огромное спасибо вам JohnSUN.

Я думаю, огромное количество людей будут вам благодарны.
Записан
lyolikfx
Новичок
*
Offline Offline

Расположение: Мамка Украина
Сообщений: 25


« Ответ #41: 27 Январь 2011, 11:49 »

 Грустный
Произошла, маленькая заминка. Хочут этот макрос применить для других документов, и в последствии при выполнении его выбрасывает ошибку.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 373


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #42: 27 Январь 2011, 15:52 »

Можешь чуть подробнее про ошибку? Какая ошибка, в каком месте? Пока не забыл, что там понаписывал - могу поправить.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
lyolikfx
Новичок
*
Offline Offline

Расположение: Мамка Украина
Сообщений: 25


« Ответ #43: 29 Январь 2011, 11:19 »

Наконец-то добрался до компутера. Вообщем я лучше сформулирую вопрос по другому, как правильно применить данный макрос к любому другому документу формата xls или аналога ОпенОфис?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 373


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #44: 29 Январь 2011, 14:48 »

Последовательность действий такая:
1) Открыть ПримерМакросаДляПрайса_1.ods
2) Выбрать команды меню Сервис - Макросы - Управление макросами - OpenOffice.org Basic
3) Нажать кнопку "Управление"
4) В открывшемся окне развернуть модули документа ПримерМакросаДляПрайса_1.ods-Standard
5) Зажать клавишу Ctrl и перетащить мышью модуль CopyDataToAnotherSheet в библиотеку Мои макросы-Standard. Кнопка "Закрыть".
6) Записать любым удобным способом в какой-либо модуль в Мои макросы-Standard процедуру, которая будет вызывать CopyDataToTargetSheet из только что скопированного модуля с нужными параметрами. Например, так:
Код:
Sub CopyToPrice()
Const sName = "Прайс1" ' Если потребуется сменить имя листа — меняем в этом месте
CopyDataToTargetSheet(sName, 3, 2, False)
End Sub
7) Назначить для вызова этой процедуры сочетание клавиш или кнопку на панели инструментов.

Понимаю, что п.6 расписан недостаточно подробно, но сейчас не могу придумать простых слов, чтобы его объяснить. Если возникнут трудности - лучше переспроси, ладно?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Страниц: « 1 2 3 4 »   Вверх
  Печать  
 
Перейти в:  

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