Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2009, 21:20   #1
Урба Сергей
Пользователь
 
Аватар для Урба Сергей
 
Регистрация: 13.09.2009
Сообщений: 12
По умолчанию Exel в Edit

Всем Привет! Кто подскажет как данные из одной ячейки Excel передать в Edit, если в Ecxel в этой ячейке данные переодически обновляются(они автоматически поступают из другой программы, но не сохраняются).Закрыть Excel я не могу, так как нарушится передача данных из той другой проги.

Я догадываюсь, что нужно как то сделать так, чтоб данные в Excel автоматически сохранялись без её закрытия, НО КАК это сделать? Автосохранение самого Excel срабатывает только через 1 минуту(нужно чаще) и то не всегда, мне нужно это сделать через Delphi. ПОМОГИТЕ!!!

Пока прога написана так:

Код:
procedure TForm1.Edit1Click(Sender: TObject);
var
Ap : Variant;
A: integer;
begin

Ap := CreateOleObject('Excel.Application');
Ap.Workbooks.Add('C:\Users\ÒÐÎÍ\Desktop\INTRA2.xls');
Ap.Visible := True;
A :=Ap.Range['A1'];
Edit1.Text:=IntToStr(A);
end;

Последний раз редактировалось Stilet; 30.10.2009 в 08:25.
Урба Сергей вне форума Ответить с цитированием
Старый 29.10.2009, 22:20   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А через таймер?
mihali4 вне форума Ответить с цитированием
Старый 29.10.2009, 22:43   #3
Урба Сергей
Пользователь
 
Аватар для Урба Сергей
 
Регистрация: 13.09.2009
Сообщений: 12
По умолчанию

Я именно через таймер это и делаю( я так просто для примера текст выложил).
Прикол весь в чём, например:
в ячейке A1 изначально стоит число '25', я его вывожу в Edit, всё отлично получается.
Далее в эту ячейку при открытом окне Excel, в ячейку A1 поступает из другой проги цифра '53', я проделываю ту же процедуру( вернее таймер её проделывает), но в Edit опять появляется '25'. Я понимаю что дело в том, что число '53' появилось но не сохранилось,так как мне его сохранить не пользуясь автосохранением EXcel(так как он никогда не работает(сам попробовал и на форумах почитал))? Как это сделать через Delphi не закрывая окана Exel? Если закрою окно нарушится связь с другой прогой( извиняюсь за повтор).
Урба Сергей вне форума Ответить с цитированием
Старый 29.10.2009, 22:52   #4
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

может я чего-то не понимаю.
Но чисто так по логике.

1. Вы создаете приложение Эксель и открываете книгу. В 2003 экселе в это время в эту книгу писать нельзя. То есть данные уже не поступят в момент открытия.

2. Если данные пишутся периодически, то есть некие границы или длительность периода. Значит книгу надо открывать в "паузу". И еще, неплохо бы делать синхронизацию.

3. А почему в Эксель??? Через текстовый файл или другим способо никак???

4. Если закрывать Эксель нельзя, тогда надо первый раз открыть Эксель.А потом искать в памяти уже существующие копии и использовать их. а то у вас Экселей наплодиттся - винда от удивления грохнется раньше, чем вы задачу выполните.
Вместо CreateOleObject('Excel.Application' );
Использовать GetActiveOleObject('Excel.Applicati on')

5. То есть в любом случае вам нужен таймер и интервалы и синхронизация

ААА, я понял. ты же читаешь то, что хранится на диске, а не в памяти... Есть только один способ. Макрос на событие CHANGE в экселе.
А он пусть пишет в текстовый файл содержимое. а ты уже читай не эксель, а файл - тогда сам эксель тебе будет сообщать значения.
А ты по факту смены или изменения файла будешь читать его в Дельфи.

Пожалуй только так.

Событие в Эксель на изменение ячейки. Если она равна А1, то просто тупо пишешь в заданный файл ее значение. А иначе при твоих условиях никак

Короче

1. В книге эксель, куда что-то пишется сидит в "Эта книга" макрос на стандартное событие "Выбор ячейки" не помню, что-то типа CELLCHANGE
2. В макросе выполняется запись известной ячейки в заданный файл, добавляя значения в конец или начало файла, как выйдет.
3. Дельфи читает по таймеру файл по факту изменения его размера.

Все. задача решена.
и это пройдет...

Последний раз редактировалось Stilet; 30.10.2009 в 08:25.
grenles вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из EXEL в Word olimpus Microsoft Office Excel 3 30.09.2009 18:55
EXEL Artomes Microsoft Office Excel 0 02.11.2008 23:18
Exel MAcK Microsoft Office Excel 1 30.04.2007 15:21