Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа VBA с внешними приложениями 
:(
    Опции темы
xkodex
  Дата 12.2.2007, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 30.4.2005

Репутация: нет
Всего: нет



Суть задачи:
 У нас есть приложение для Excel.  Нужно прочитать данные из другой программы, например из exe файла. В этом exe'шнике есть текстбокс оттуда нам надо взять данные, а в другой текстбокс вставить данные. Вожможно ли это? А если возможно то как релизовать?
PM MAIL WWW   Вверх
Kirill89
Дата 12.2.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



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


--------------------
PM MAIL WWW   Вверх
xkodex
Дата 12.2.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 30.4.2005

Репутация: нет
Всего: нет



Kirill89
а подробнее...
PM MAIL WWW   Вверх
Kirill89
Дата 13.2.2007, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: 3
Всего: 4



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

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


--------------------
PM MAIL WWW   Вверх
Akina
Дата 13.2.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



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

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

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

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

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.