![]() |
|
Модераторы: diadiavova, gambit |
![]()
|
|
| Arkadijnich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 15.8.2013 Репутация: нет Всего: нет |
Доброго Всем дня!
В ячейку Excel А1 поступают данные в режиме On-line по DDE. Не получается подключиться к данной ячейке из формы, чтобы данные отображались в TextBox1. Событие WorkSheet_Change не работает в этом случае. Надо как –то по другому. Кто сталкивался с данным вопросом подскажите. С Уважением. Спасибо. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
Опрашивай по таймеру, скажем, раз в секунду. Одна ячейка - много ресурсов не съест... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Arkadijnich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 15.8.2013 Репутация: нет Всего: нет |
Код пишу в VS2010 на VB.Net. Связь с Excel установлена. Знающие рекомендуют идти методами Calculate() или SetLinkOnData. Я их не знаю. Подскажите кто в курсе.
С Уважением. Спасибо. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
http://msdn.microsoft.com/en-us/library/of...office.10).aspx
http://msdn.microsoft.com/en-us/library/of...office.10).aspx -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Arkadijnich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 15.8.2013 Репутация: нет Всего: нет |
Akina, Спасибо!
Начинаю погружение. |
|||
|
||||
| Arkadijnich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 15.8.2013 Репутация: нет Всего: нет |
Вот так мои пробелы виднее.
|
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Что это? Вот код, на основе твоего, у меня работает
Не думаю, что обработка этого события решит проблему, описанную в топикстарте, но тем не менее -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| Arkadijnich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 15.8.2013 Репутация: нет Всего: нет |
Diadiavova, у меня данный код работать не хочет, что-то на то.
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
А как ты его пытаешься заставить работать? Я, например, ввел в A1 некий текст, а потом, для того, чтобы инициировать событие Calculate в другую ячейку ввел формулу( например =2*2) и нажала энтер. Произошло данное событие и в текстбоксе формы отобразился текст из указанной ячейки. Вряд ли тебе это поможет, но я об этом и написал. Попробуй советом Акины воспользоваться или уточни, что именно тебе советовали. Тут вся проблема в том, что во время редактирования ячейки события не возникают, скорей всего в это время и ее значение остается прежним. Меняется значение тогда, когда с нее переводится фокус. Можно попробовать по таймеру вызывать метод Calculate, чтобы инициировать одноименное событие(не знаю сработает или нет), тогда этим кодом можно будет воспользоваться. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Arkadijnich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 15.8.2013 Репутация: нет Всего: нет |
Diadiavova, Ваш код работает как положено!
Выход подсказали следующий: в любую ячейку вводим формулу =Сегодня() и все работает. Но появилась задержка. Поясню: Данные в ячейку А1 поступают в режиме On-Line по DDE. Поток отображается и в А1 и в TextBox1, но разница между А1 и TextBox1 в одну строку. Допустим данные идут в колонку С. В момент времени t в С1=10, С2= 15 ....... С23= 17,С24= 55. Так вот А1 = 55, а TextBox1 = 23, некое отстование. Надо разбираться. С Уважением. Огромное спасибо за помощь! |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Я не могу знать как устроена таблица экселя, но принцип работы подобных элементов управления мне знаком по датагридам. Когда сущствует много разных ячеек и при этом ячейки эти можно редактировать как текстбоксы, создается впечатление, что это и есть текстбоксы. В какой-то степени это так и есть, но только в момент редактирования. Обычно ячейка это просто небольшая область контрола, контролируемая неким объектом, который содержит всю информацию о ячейке и выполняет ее прорисовку. Но вот когда ячейка переходит в режим редактирования, то на ее место становится реальный текстбокс, который в ином случае находится либо на месте другой ячейки, либо вообще невидим. В него передаются данные ячейки и в момент редактирования пользователь взаимодействует именно с ним, а вот ячейке данные передаются только тогда, когда она выходит из режима редактирования и текстбокс либо перемещается на другую ячейку, либо становится невидимым. Именно в это время и происходит событие ченджь и все остальное. Таким образом для того, чтобы отслеживать изменения в режиме реального времени, надо иметь доступ не к ячейке, а к этому самому эдитконтролу(текстбоксу например). В датагриде есть способ получить к нему доступ и подписаться на его события, а вот модель автоматизации экселя вряд ли его предоставляет, так что я вообще не думаю, что есть возможность снимать данные прямо во время редактирования. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Arkadijnich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 15.8.2013 Репутация: нет Всего: нет |
Diadiavova, еще раз большое спасибо за содействие!
И, из любопытства, а как работает метод SetLinkOnData? С Уважением. Спасибо. |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| Правила форума VB .NET | |
|
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |