Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899

Данные из стороннего приложения в Excel через DDE

07.07.2015, 16:36. Показов 4102. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть:
Некое приложение, из которого средствами DDE получаю данные на лист Excel
В модуле есть макрос, который создает и отсылает приложению строку вида
Visual Basic
1
RżCžMNB.EU.STMT.ENT.VALUEžPASSTHRUżEXCEL|[demo2.xlsm]All.enquiriesż9ż2ż9žMNB.ACCOUNTżEQż12345678žVALUE.DATE.SELżGTż20150425ž
Данные возвращаются в файл demo2.xlsm на лист All.enquiries начиная с ячейки B9 (9-ая строка 2-ой столбец)

Как хочу сделать:
Данные, которые возвращает приложение - загнать сразу в массив, а не на лист.
Возможно ли это?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.07.2015, 16:36
Ответы с готовыми решениями:

Обработка события получения данных в Excel через DDE
Суть проблемы в следующем: есть приложение QUIK, в котором я создаю DDE-сервер (указывая приложение, книгу, лист, ячейки). Это приложение...

Вставить текстовые данные в Edit дочернего окна стороннего приложения
В общем имеется строковая переменная и окно стороннего приложения, имеющее дочернее окно класса Edit (класс узнал экспериментально с...

Можно ли из стороннего приложения запустить Excel и передать ему макрос для выполнения
Можно ли из стороннего приложения запустить Excel и передать ему макрос для выполнения

5
2038 / 470 / 131
Регистрация: 13.11.2008
Сообщений: 897
07.07.2015, 16:58
Вряд ли здесь имеет отношение Excel. Приведенная строка явно не из VBA. Из какого модуля взят код?
0
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
07.07.2015, 21:00  [ТС]
Очень даже имеет. Весь код приводить нет смысла, там парсинг строк из листа Excel и сборка строки (из поста #1).
Если коротенько, то выглядит все так:
Visual Basic
1
2
3
4
5
6
7
8
9
DDECHAN = DDEInitiate( _
        app:="DESKTOP", _
        topic:="MDIForm1")
 
Set rangetopoke = RЕјCЕѕMNB.EU.STMT.ENT.VALUEЕѕPASSTHRUЕјEXCEL|[demo2.xlsm]All.enquiriesЕј9Еј2Еј9ЕѕMNB.ACCOUNTЕјEQЕј12345678ЕѕVALUE.DATE.SELЕјGTЕј20150425Еѕ
 
DDEPoke DDECHAN, "txtptin", rangetopoke
        
DDETerminate DDECHAN
Поиски по теме приводят только примеры, где выгрузка данных происходит на лист (с указанием конкретной ячейки). Мой вопрос - можно ли вместо указания ячейки подсунуть массив?
0
2038 / 470 / 131
Регистрация: 13.11.2008
Сообщений: 897
08.07.2015, 13:37
Повторюсь. Этот код - откуда? Где он записан? В VBA не допускается обращение к книге в виде: [demo2.xlsm].
И адреса ячеек там тоже не видать. И точек слишком много для адресации в VBA.
Отсюда и вопрос: где записан сей код? Пока что Ваш вопрос к Excel имеет лишь то отношение, что запись идет в него. И все. Но это не означает, что проблему можно через этот Excel решить.

Цитата Сообщение от kasan Посмотреть сообщение
можно ли вместо указания ячейки подсунуть массив?
Если запись в Excel производится из другого приложения - то в нем и надо все смотреть - есть ли вообще возможность изменить код так, чтобы выгрузка происходила сразу в массив ячеек, а не в одну. Ведь для этого надо этот массив сначала создать - а не факт, что алгоритмы программы это вообще способны сделать.
1
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
08.07.2015, 15:48  [ТС]
The_Prist, на самом деле эта строка не имеет отношения к VBA, это НЕ синтаксис VBA. Это просто текст, который понимает приложение. Я не правильно скопировал код, хотел сократить, но получилось криво.
Корректный вариант:
Visual Basic
1
2
3
4
5
6
7
8
9
10
DDECHAN = DDEInitiate( _
        app:="DESKTOP", _
        topic:="MDIForm1")
 
Set rangetopoke = ActiveWorkbook.Worksheets("1").Range("A1")
'ячейка A1 содержит этот текст: RЕјCЕѕMNB.EU.STMT.ENT.VALUEЕѕPASSTHRUЕјEXCEL|[demo2.xlsm]All.enquiriesЕј9Еј2Еј9ЕѕMNB.ACCOUNTЕјEQЕј12345678ЕѕVALUE.DATE.SELЕјGTЕј20150425Еѕ
 
DDEPoke DDECHAN, "txtptin", rangetopoke
        
DDETerminate DDECHAN
В любом случае спасибо! Натолкнули меня на мысль.
0
2038 / 470 / 131
Регистрация: 13.11.2008
Сообщений: 897
08.07.2015, 16:34
На основании этого куска точно не получится массив записать. Т.к. его надо сначала сформировать, а где это сделать из куска не видно(так еще две функции используются, как я вижу). А выгрузить сформированный массив уже не проблема - вместо А1 указывается диапазон, равные количеству элементов массива: А1:А10.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.07.2015, 16:34
Помогаю со студенческими работами здесь

Получить данные из стороннего приложения
Приложение просто отображает таблицу, в которой периодически меняются текстовые данные. Пытался посмотреть через Spy++, но она мне ничего...

Ввести данные в поля стороннего приложения
Есть программа. имеет два поля пароль и кнопка. Нужно ввести и нажать кнопку программно. Пароль знаю

WinApi считать данные из стороннего приложения
Всем привете! Ребят, выручайте. Мне необходимо по нажатию клавиши вытащить номер входящего вызова из программы X-lite(прога для IP...

Как непрерывно считывать данные с окна стороннего приложения?
Подскажите пожалуйста как можно непрерывно считывать данные с окна стороннего приложения? Мне необходимо подключаться к окну другой...

Запуск стороннего приложения через CreateProcess
Доброго времени суток! Есть два одинаковых консольных приложения, но с разными именами. Из первого вызывается второе следующей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений Всем привет. А вот мой компьютер, переделанный из ноутбука. Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
Mapped types (отображённые типы) в TypeScript
Reangularity 03.11.2025
Mapped types работают как конвейер - берут существующую структуру и производят новую по заданным правилам. Меняют модификаторы свойств, трансформируют значения, фильтруют ключи. Один раз описал. . .
Адаптивная случайность в Unity: динамические вероятности для улучшения игрового дизайна
GameUnited 02.11.2025
Мой знакомый геймдизайнер потерял двадцать процентов активной аудитории за неделю. А виновником оказался обычный генератор псевдослучайных чисел. Казалось бы - добавил в карточную игру случайное. . .
Протоколы в Python
py-thonny 31.10.2025
Традиционная утиная типизация работает просто: попробовал вызвать метод, получилось - отлично, не получилось - упал с ошибкой в рантайме. Протоколы добавляют сюда проверку на этапе статического. . .
C++26: Read-copy-update (RCU)
bytestream 30.10.2025
Прошло почти двадцать лет с тех пор, как производители процессоров отказались от гонки мегагерц и перешли на многоядерность. И знаете что? Мы до сих пор спотыкаемся о те же грабли. Каждый раз, когда. . .
Изображения webp на старых x32 ОС Windows XP и Windows 7
Argus19 30.10.2025
Изображения webp на старых x32 ОС Windows XP и Windows 7 Чтобы решить задачу, использовал интернет: поисковики Google и Yandex, а также подсказки Deep Seek. Как оказалось, чтобы создать. . .
Passkey в ASP.NET Core identity
stackOverflow 29.10.2025
Пароли мертвы. Нет, серьезно - я повторяю это уже лет пять, но теперь впервые за это время чувствую, что это не просто красивые слова. В . NET 10 команда Microsoft внедрила поддержку Passkey прямо в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru