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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2010, 12: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, 13:07   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Итак, требуется 1 раз в минуту на листе ДДЕ
1.В ячейку А1 записать текущее время (дату и время)
2.значения из 17 первых ячеек (с А по Q) певой строки скопировать куда?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 25.04.2010, 16: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, 01:44   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

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

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение базы 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 18:22
Сохранение данных... Leva Общие вопросы Delphi 4 07.09.2008 00:28