Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 29 мар 2024, 01:21

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Обновить записи фигуры в Excel
СообщениеДобавлено: 19 ноя 2015, 06:54 
Не в сети

Зарегистрирован: 19 ноя 2015, 06:12
Сообщений: 12
Использую Visio c: 2013
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
Здравствуйте!
Необходимо обновить данные фигур (Addon DBU) в Excel при выделении:
Код:
Dim WithEvents app As Visio.Application
Sub Start()
    Set app = Application
End Sub


Private Sub app_SelectionChanged(ByVal Window As IVWindow)
MsgBox "обновл"
yStr = Array(1, 2)
'''''''''''Обновляем элементы'''''''''''
For k = LBound(yStr) To UBound(yStr)
ActiveWindow.Page.Shapes.ItemFromID(yStr(k)).CellsSRC(Visio.visSectionAction, 2, Visio.visActionAction).Trigger 'Обновить запись базы данных
Next
End Sub



Sub обновить()
MsgBox "обновл"
yStr = Array(1, 2)
'''''''''''Обновляем элементы'''''''''''
For k = LBound(yStr) To UBound(yStr)
ActiveWindow.Page.Shapes.ItemFromID(yStr(k)).CellsSRC(Visio.visSectionAction, 2, Visio.visActionAction).Trigger 'Обновить запись базы данных
Next
End Sub

Если просто запустить макрос то обновляются 1 и 2 шейп, если же запуск производится по событию то обновляется только 1 шейп, в чем причина?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Обновить записи фигуры в Excel
СообщениеДобавлено: 19 ноя 2015, 07:55 
Я правильно понимаю, что оба шейпа имеют пункт Action с запуском DBU ?

Обновление должно проходить при каком изменении селекшена?


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Обновить записи фигуры в Excel
СообщениеДобавлено: 19 ноя 2015, 09:39 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Похоже, что причина где-то за рамками приведенного текста. Либо во временных соотношениях, либо создаются какие-то условия для ошибки и макрос останавливается...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Обновить записи фигуры в Excel
СообщениеДобавлено: 19 ноя 2015, 10:34 
Не в сети

Зарегистрирован: 19 ноя 2015, 06:12
Сообщений: 12
Использую Visio c: 2013
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
Да, у обоих шейпов в ячейке прописано =RUNADDON("DBU"). Если в коде поставить на обновление первым 2 шейп то первый необновляется.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Обновить записи фигуры в Excel
СообщениеДобавлено: 19 ноя 2015, 10:42 
Не в сети

Зарегистрирован: 19 ноя 2015, 06:12
Сообщений: 12
Использую Visio c: 2013
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
Макрос не останавливается. При запуске по событию значек обновления фигуры (типа таблички) появляется уже после цикла один раз, при ручном запуске все нормально (в цикле два раза).


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Обновить записи фигуры в Excel
СообщениеДобавлено: 19 ноя 2015, 10:51 
Не в сети

Зарегистрирован: 19 ноя 2015, 06:12
Сообщений: 12
Использую Visio c: 2013
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
Думал попробовать без .Trigger запускать. Примерно так:
Код:
Sub Macro3_()

Set shp = Visio.ActiveWindow.Selection(1)
args = "/visio=instancehandle32 /doc=docIndex /page=pagIndex/shape=Nameid"
args = Replace(args, "instancehandle32", Visio.Application.WindowHandle32)
args = Replace(args, "docIndex", shp.Document.Index)
args = Replace(args, "pagIndex", shp.ContainingPage.Index)
args = Replace(args, "Nameid", shp.NameID)
Visio.Addons("DBU").Run args

End Sub

но пишет что не может прочитать сведения связи


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Обновить записи фигуры в Excel
СообщениеДобавлено: 19 ноя 2015, 15:31 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
А шейп не должен быть селектирован?
Может быть Вы в одном случае его селектируете (по ходу дела), а при срабатывании события он остается не селектированным?
Может что-то вот в таком духе сделать?
Код:
Sub ttt()
    Dim sh As Visio.Shape
   
    Set sh = ActivePage.Shapes(1)
    ActiveWindow.DeselectAll
    ActiveWindow.Select sh, visSelect
    sh.Cells("Actions.Row_3.Action").Trigger
   
    Set sh = ActivePage.Shapes(2)
    ActiveWindow.DeselectAll
    ActiveWindow.Select sh, visSelect
    sh.Cells("Actions.Row_3.Action").Trigger
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Обновить записи фигуры в Excel
СообщениеДобавлено: 19 ноя 2015, 15:56 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Я был неправ. Селектирование роли не играет.
Можно еще предположить, что обработчик события блокирует какие-то операции на время выполнения. И не позволяет вызывать аддон дважды в одном обработчике...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Обновить записи фигуры в Excel
СообщениеДобавлено: 20 ноя 2015, 03:36 
Не в сети

Зарегистрирован: 19 ноя 2015, 06:12
Сообщений: 12
Использую Visio c: 2013
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
Пробовал другие события, тоже не идет. Да, жаль что так не работает, было бы очень хорошо. Остается только все обновлять Addons("DBUS"), либо макрос с авто обновлением (по времени) измененных шейпов


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Обновить записи фигуры в Excel
СообщениеДобавлено: 20 ноя 2015, 09:55 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Если задача более-менее серьезная, то не жалко потратить время на подключение к источнику через ADODB вместо штатного аддона. Это немного сложнее, но зато снимет подобные ограничения.
А если версия Visio 2007 и старше, то там встроенный канал подключения к внешним данным. Для него nbelyh делал расширение с обратной передачей данных. Может быть это окажется удобнее.
Дополнено позднее:
nbelyh в сообщении #5918 писал(а):
Попробовал сделать обратную синхрониацию данных.
nbelyh в сообщении #10429 писал(а):
Выложил на свой сайт BackSync, и переделал тему для сайта чтоб покрасивше был :)
http://unmanagedvisio.com/products/visio-back-sync/


Последний раз редактировалось Surrogate 11 янв 2017, 16:03, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Обновить записи фигуры в Excel
СообщениеДобавлено: 23 ноя 2015, 03:14 
Не в сети

Зарегистрирован: 19 ноя 2015, 06:12
Сообщений: 12
Использую Visio c: 2013
Очков репутации: 3

Добавить очки репутацииУменьшить очки репутации
Хорошо, посмотрю расширение.
Спасибо за помощь!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB