Список форумов Форум Libreoffice

Форум Libreoffice

Добро пожаловать на Форум Libreoffice!
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

English French German Italian Portuguese Russian Spanish
Передача данных между файлами (автоматически)

 
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Calc
Предыдущая тема :: Следующая тема  
Автор Сообщение
neft



Репутация: 0    

Зарегистрирован: 19.10.2011
Сообщения: 28

СообщениеДобавлено: Пт Мар 23, 2012 9:11 pm    Заголовок сообщения: Передача данных между файлами (автоматически) Ответить с цитатой

Если нужно автоматически передавать данные, вводимые в одном файле, в другой, то есть, нужно, чтобы данные, вводимые, например, на листе файла AN.ods, автоматически отображались на листе файла BN.ods, то
1. В файле AN.ods создаются именованные диапазоны, изменение данных которых будет отслеживаться.
2. В файле BN.ods устанавливается "Ссылка на внешние данные" (в меню "Вставка") для каждого отслеживаемого диапазона.



3. В файл AN.ods добавляем Listener, отслеживающий изменение данных на листе и выполняющий автоматическое сохранение этого файла на диске при изменении данных.

Код:
Sub addListener
   oDocument = ThisComponent
   oSheet = oDocument.CurrentController.getActiveSheet() ' get actual sheet
   oListener = CreateUnoListener( "OOO_", "com.sun.star.chart.XChartDataChangeEventListener" )

 oCell1 = oSheet.getCellRangeByName("OA")
 oCell1.addChartDataChangeEventListener(oListener)
 
 oCell2 = oSheet.getCellRangeByName("OE")
 oCell2.addChartDataChangeEventListener(oListener)

 oCell3 = oSheet.getCellRangeByName("OC")
 oCell3.addChartDataChangeEventListener(oListener)

      MsgBox "Listener Add"
End Sub


Sub OOO_chartDataChanged(oEvent)
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
End Sub


Теперь каждое изменение данных в любом из диапазонов на листе файла AN.ods будет автоматически (через 1 сек) отображаться в соответствующем диапазоне на листе BN.ods.



Ссылка для скачивания тестовых файлов:
http://ifolder.ru/29485435

PS. Файл AN.ods в данном примере расположен в папке "400" на диске "С" ( C:\400\AN.ods )
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Madyr



Репутация: 0    

Зарегистрирован: 15.05.2013
Сообщения: 2

СообщениеДобавлено: Ср Май 15, 2013 6:01 am    Заголовок сообщения: Ответить с цитатой

не понял 3-ий пункт?
Как добавить listener?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vanya



Репутация: 0    

Зарегистрирован: 02.08.2011
Сообщения: 17

СообщениеДобавлено: Ср Май 15, 2013 7:56 am    Заголовок сообщения: Ответить с цитатой

Madyr писал(а):
не понял 3-ий пункт?
Как добавить listener?

Это макрос такой (Sub addListener ).
Как писать макросы знаете?
(Сервис - Макросы - ...)
Ну вот и напишите там этот указанный Код.
Для того, чтобы все работало, нужно сначала запустить этот самый макрос addListener.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vanya



Репутация: 0    

Зарегистрирован: 02.08.2011
Сообщения: 17

СообщениеДобавлено: Ср Май 15, 2013 7:59 am    Заголовок сообщения: Ответить с цитатой

Жаль, что срок хранения тестовых файлов истек. Посмотреть образец нельзя.
Если у вас не получится, то выложите свои файлы. На их примере разберемся.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
neft



Репутация: 0    

Зарегистрирован: 19.10.2011
Сообщения: 28

СообщениеДобавлено: Ср Май 15, 2013 8:28 am    Заголовок сообщения: Ответить с цитатой

Ссылка для скачивания примера
http://rusfolder.com/36398330
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Calc Часовой пояс: GMT
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Вы можете бесплатно создать форум на MyBB2.ru, RSS