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

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

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

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Копирование в буфер  (Прочитано 385 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mcdy
Новичок
*
Offline Offline

Сообщений: 3


« Стартовое сообщение: 26 Сентябрь 2017, 10:24 »

Много информации на форуме,  но слишком сложные примеры,  выделить именно копирование не получается.

Нужен макрос для копирования в буфер заданного диапазона ячеек,  скажем а10:в20
Помогите,  пожалуйста.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #1: 26 Сентябрь 2017, 10:54 »

Добро пожаловать на форум!
См. у Питоньяка в главе  5.23.1. Copy Spreadsheet Cells With The Clipboard - он считает, что проще всего это сделать с помощью диспетчера.
Записан

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

Сообщений: 3


« Ответ #2: 26 Сентябрь 2017, 13:27 »

Спс... в книге еще хуже...  Но, вобщем получилось так:

Код:

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$5:$C$728"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

end sub
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #3: 26 Сентябрь 2017, 13:38 »

Ну, не то чтобы хуже... Просто вместо команды диспетчера .uno:GoToCell там использован .select (метод CurrentController'а). Получилось многословнее и непонятнее.
Ну, в общем заработало и ладно. Поздравляю с трудовой победой!  Всё хорошо
Записан

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

Сообщений: 759


« Ответ #4: 26 Сентябрь 2017, 13:50 »

A так? В LibreOffice Calc

Код:
Option VBASupport 1
Option Compatible

Sub CopyRangeVBAStyle()
[A5:C728].Copy
End sub


Уровень поддержки "объектной VBA-модели Excel" - в LibreOffice на хорошем уровне, а сама модель - верх продуманности и немногословности.
« Последнее редактирование: 26 Сентябрь 2017, 14:02 от economist » Записан

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

Сообщений: 3


« Ответ #5: 26 Сентябрь 2017, 16:06 »

Ну, не то чтобы хуже...
"Хуже" в смысле "непонятнее". Постоянно ошибки вылетали.

A так? В LibreOffice Calc
Работает. вау...
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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