Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 25.04.2010, 11:38   #1
kvs
Новичок
Джуниор
 
Регистрация: 25.04.2010
Сообщений: 3
По умолчанию построчное сохранение данных в табличном виде

Здравствуйте.
Есть небольшая проблема. Осуществляю передачу данных по DDE из стороннего приложения в Excel 2003. Всего 16 каналов, занимают ячеки с B1 по Q1. С этим проблем нет, данные передаются нормально. Требуется каждую минуту, в этом же листе, сохранять эти данные по типу:со второй строки в столбце A будет выводится дата и время, а в столбцах с B по Q поминутные значения данных поступающих по DDE в ячейки с B1 по Q1. Здесь требуется макрос. С VBA раньше не работал, а сделать надо быстро.
Лист имеет название DDE.

Нашел вот такой пример:
http://forex.kbpauk.ru/showflat.php/...37/an/0/page/1

Создаете лист "DDE", например.
А1 =MT4|BID!EURUSD
Б1 =MT4|ASK!EURUSD
В VB в этом листе создаете процедуру:
Sub Worksheet_Calculate()
WorksheetName = "DDE"
i = Application.WorksheetFunction.Count A(Worksheet
(WorksheetName).Range("A:A"))
j = Application.WorksheetFunction.Count A(Worksheets(WorksheetName).Range(" J:J"))
SpotAsk = Worksheets(WorksheetName).Cells(1, 1).Value
SpotBid = Worksheets(WorksheetName).Cells(1, 2).Value
Worksheets(WorksheetName).Cells(i + 1, 1).Value = Time()
Worksheets(WorksheetName).Cells(i + 1, 3).Value = SpotAsk
Worksheets(WorksheetName).Cells(i + 1, 2).Value = SpotBid
End Sub

Правда здесь по изменению, а требуется сохранение каждую минуту.

Довел до такого вида:

Sub Worksheet_Calculate()
WorksheetName = "DDE"
i = Application.WorksheetFunction.Count A(Worksheets(WorksheetName).Range(" A:A"))
j = Application.WorksheetFunction.Count A(Worksheets(WorksheetName).Range(" R:R"))
DbK1 = Worksheets(WorksheetName).Cells(1, 2).Value
DbK2 = Worksheets(WorksheetName).Cells(1, 3).Value
DbK3 = Worksheets(WorksheetName).Cells(1, 4).Value
DbK4 = Worksheets(WorksheetName).Cells(1, 5).Value
DbK5 = Worksheets(WorksheetName).Cells(1, 6).Value
DbK6 = Worksheets(WorksheetName).Cells(1, 7).Value
DbK7 = Worksheets(WorksheetName).Cells(1, 8).Value
DbK8 = Worksheets(WorksheetName).Cells(1, 9).Value
DbK9 = Worksheets(WorksheetName).Cells(1, 10).Value
DbK10 = Worksheets(WorksheetName).Cells(1, 11).Value
DbK11 = Worksheets(WorksheetName).Cells(1, 12).Value
DbK12 = Worksheets(WorksheetName).Cells(1, 13).Value
DbK13 = Worksheets(WorksheetName).Cells(1, 14).Value
DbK14 = Worksheets(WorksheetName).Cells(1, 15).Value
DbK15 = Worksheets(WorksheetName).Cells(1, 16).Value
DbK16 = Worksheets(WorksheetName).Cells(1, 17).Value
Worksheets(WorksheetName).Cells(i + 1, 1).Value = Time()
Worksheets(WorksheetName).Cells(i + 1, 2).Value = DbK1
Worksheets(WorksheetName).Cells(i + 1, 3).Value = DbK2
Worksheets(WorksheetName).Cells(i + 1, 4).Value = DbK3
Worksheets(WorksheetName).Cells(i + 1, 5).Value = DbK4
Worksheets(WorksheetName).Cells(i + 1, 6).Value = DbK5
Worksheets(WorksheetName).Cells(i + 1, 7).Value = DbK6
Worksheets(WorksheetName).Cells(i + 1, 8).Value = DbK7
Worksheets(WorksheetName).Cells(i + 1, 9).Value = DbK8
Worksheets(WorksheetName).Cells(i + 1, 10).Value = DbK9
Worksheets(WorksheetName).Cells(i + 1, 11).Value = DbK10
Worksheets(WorksheetName).Cells(i + 1, 12).Value = DbK11
Worksheets(WorksheetName).Cells(i + 1, 13).Value = DbK12
Worksheets(WorksheetName).Cells(i + 1, 14).Value = DbK13
Worksheets(WorksheetName).Cells(i + 1, 15).Value = DbK14
Worksheets(WorksheetName).Cells(i + 1, 16).Value = DbK15
Worksheets(WorksheetName).Cells(i + 1, 17).Value = DbK16


End Sub

Пока был макрос под один параметр, еще запись шла под 16 уже не сохраняет и дату еще не выводит.

Заранее спасибо. Буду рад любому ответу.
kvs вне форума Ответить с цитированием
Старый 25.04.2010, 12:07   #2
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,332
По умолчанию

Итак, требуется 1 раз в минуту на листе ДДЕ
1.В ячейку А1 записать текущее время (дату и время)
2.значения из 17 первых ячеек (с А по Q) певой строки скопировать куда?
IgorGO вне форума Ответить с цитированием
Старый 25.04.2010, 15:23   #3
kvs
Новичок
Джуниор
 
Регистрация: 25.04.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Итак, требуется 1 раз в минуту на листе ДДЕ
1.В ячейку А1 записать текущее время (дату и время)
2.значения из 17 первых ячеек (с А по Q) певой строки скопировать куда?
Смысл такой:
В данном случае в ячеку A2 дату и время, и в ячеки с В2 по Q2 значения ячеек с В1 по Q1. Через минуту в B3 время дату и в ячеки с B3 по Q3 значения ячеек с В1 по Q1. В результате к примеру за час у нас получится 60 строк с поминутными значениями данных передаваемых по DDE в ячейки В1 по Q1.
kvs вне форума Ответить с цитированием
Старый 26.04.2010, 00:44   #4
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,332
По умолчанию

Процесс стартует автоматически при загруке файла и отключается при закрытии.
Есть кнопки для запуска/остановки в ручном режиме.
Вложения
Тип файла: rar Книга310.rar (15.2 Кб, 44 просмотров)
41001804815208 - Яндекс-деньги благодарности за удачные советы и решения можно отправлять прямо сюда)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.04.2010, 18:26   #5
kvs
Новичок
Джуниор
 
Регистрация: 25.04.2010
Сообщений: 3
По умолчанию

IgorGO большое спасибо. Очень помогло. Макрос правда немного подправили, но основа была сделана Вами)) Благодарности чуть попозже. Давно собирался виртуальный кошелек сделать))
kvs вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение базы MySQL в виде запроса... masterdela БД в Delphi 3 25.02.2009 07:01
Форма с несколькими таблицами в табличном виде. Как сделать? Jenya Microsoft Office Access 1 15.11.2008 20:37
Организация данных в виде строк. Dmitry_F Общие вопросы C/C++ 1 20.09.2008 17:22
Сохранение данных... Leva Общие вопросы Delphi 4 06.09.2008 23:28


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840