Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Работа VBA с внешними приложениями


Автор: xkodex 12.2.2007, 20:06
Суть задачи:
 У нас есть приложение для Excel.  Нужно прочитать данные из другой программы, например из exe файла. В этом exe'шнике есть текстбокс оттуда нам надо взять данные, а в другой текстбокс вставить данные. Вожможно ли это? А если возможно то как релизовать?

Автор: Kirill89 12.2.2007, 20:33
Я неуверен, что VBA может работать с API, но если может, то только так:
Получаешь hwnd окна из которого необходимо взять данные, там получаешь hwnd текстбокса...
И т.д. ....

Автор: xkodex 12.2.2007, 22:09
Kirill89
а подробнее...

Автор: Kirill89 13.2.2007, 01:25
Цитата(xkodex @ 12.2.2007,  22:09)
Kirill89
а подробнее...

Я повторюсь: я даже не уверен, что это возможно. Я VBA почти не занимался, извини, я ничем немогу тебе помочь, могу только посоветовать попробовать создать модуль, там объявить функцию API (любую), и если она будет работать, то дальше уже всё проще будет. Проверь это и отпишись.

Автор: Akina 13.2.2007, 11:52
VBA в этом смысле мало чем отличается от VB - то же объявление необходимых процедур в common-модуле, одинаковый синтаксис и пр.

Найти окно по его имени можно при помощи 
Код

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Далее требуется знать имя контрола (если он единственный - достаточно знать тип) - просто перебираем коллекцию объекта и, найдя нужное, запрашиваем его Value либо Text. Аналогично находим хэндл второго окна, второй контрол, и меняем его содержимое.

Примеры использования и связанные функции (скажем определение имени окна под курсором) находятся внимательным чтением MSDN вокруг указанной функции.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)