Страницы: 1
RSS
Вставка значения ячейки в DDE ссылку
 
Приветствую, уважаемые!
Простите если вопрос будет совсем наивным...

Подскажите, как в ссылку DDE вставить значение из ячейки с помощью макроса?

Вот пример вставки DDE ссылки в  ячейку A1:
Код
 Sub formula()
   Range("A1").Value = "=SЛОГИН|hist!'id4?req?AAPL_STK_SMART_USD_~/20170611singleSpace23singleColon59singleColon59_5singleSpaceW_11_TRADES_1_1'"
 End Sub
Нужно чтобы часть этой ссылки была заменена значением из ячейки A2 и в таком виде отправлена в ячеку A1.
А если конкретно, то вместо аббревиатуры AAPL находящейся в этой ссылки была подставлена другая аббревиатура из ячейки A2.
Подскажите пожалуйста, как это сделать?

Пробовал ставить &A2&, но так не получается...
 
krest, Вам же нужно совсем другое - не в ячейку подставлять значение из ячейки, а проверять наличие в DDE-строке значения из ячейки (или переменной.  
 
Здравствуйте, Юрий!
Очень рад, что Вы откликнулись на мой вопрос.
Но не совсем понимаю, что Вы имеете ввиду. Попробую описать алгоритм и цель того что мне нужно.
В ячейку A1 макрос вставляет ссылку DDE: =SЛОГИН|hist!'id4?req?AAL_STK_SMART_USD_~/20170611singleSpace23singleColon59singleCol­on59_5singleSpaceW_11_TRADES_1_1'

AAL должно быть взято из ячейки A2
Сылка отправляется, полученные данные сохраняются в новый файл.

Снова вставляется ссылка в ячейку A1, но в ней уже вместо AAL должна быть аббревиатура другой акции AAPL которая расположена в ячейке A3:

=SЛОГИН|hist!'id4?req?AAPL_STK_SMART_USD_~/20170611singleSpace23singleColon59singleCol­on59_5singleSpaceW_11_TRADES_1_1'

Полученные данные сохраняются в новый файл и вновь вставляется в ячейку A1 ссылка с акцией имя которой прописано в ячейке A4
И т.д.

Все это нужно для того чтобы автоматизировать получение данных по тысячам акций. Данные каждой записываются в отдельный документ Эксель и сохраняются в нужную папку.
Мне впервые пришлось пытаться писать макрос в Экселе, поэтому с терминологией и функциями совершенно не знаком... :-)

 
Уточните - это в продолжение темы про DDE и TextBox на листе?
 
Да, я продолжаю делать тот же файл с макросами, для сохранения исторических данных акций в файлы эксель.
Вы тогда дали мне понять, что не стоит задавать другие вопросы в несоответствующей теме. Попытался решить проблему самостоятельно, но увы, ничего не вышло...
 
Всегда ли требуемое значение находится между req? и _STK?
 
Да, местоположение названия акции всегда находится в одном и том же месте.
 
Всё же я Вас немного не понимаю: если это продолжение старой темы, то нужно каждый раз отслеживать появление нового вхождения. Так?
Т.е. поступила строка, которая имеет вхождение AAL - сработал макрос, поменяли вхождение (взяли его из другой ячейки - теперь будем отслеживать появление AAPL)  для следующего DDE-обновления. Правильно я понимаю? Если так, то зачем его В СТРОКЕ менять? Оно ведь УЖЕ там будет.
 
Цитата
Юрий М написал:
Если так, то зачем его В СТРОКЕ менять? Оно ведь УЖЕ там будет.
Но откуда же он там возьмется? Ведь для того чтобы его отправить, нужно чтобы в ссылке вставлялось значение ячейки...
Я Вас тоже не могу понять... )) Но это скорее всего от моей безграмотности...
Объясните на пальцах как необразованному ))
P.s. Сегодня отвечать уже не смогу.
 
Цитата
krest написал:
Но откуда же он там возьмется?
Оно придёт со стороны - по DDE-обновлению ))
Посмотрите на примере. Инструкция:
1. Сначала поменяйте в ячейке С2 текст, но символы AAL оставьте без изменения - сработает макрос и в ячейке А1 появится новое значение из списка.
2. После этого в ячейке С2 снова поменяйте текст, но чтобы там уже появилось значение из А1 - это будет вроде DDE-обновления - в ячейке А1 появится СЛЕДУЮЩЕЕ значение. Снова сработает макрос и в А1 появится новое значение.
Если нужно не так, то попробуйте переформулировать задачу, но не забывайте, что Вам нужно отлавливать DDE-изменения )
 
Доброго утра, Юрий!
Посмотрел Ваш пример. Либо я не понимаю логику Вашего видения процесса, либо Вы поняли иначе мои комканые объяснения.
Если успею, попробую все показать на примерах, чтобы понять где мы с Вами расходимся в представлениях алгоритма.

Сначала я вручную вставляю ссылку DDE в ячейку A1. (На самом деле это должно происходить автоматически)
Сразу же идет отправка ссылки и через несколко секунд в ячейке куда была вставлена ссылка(A1) появляется надпись: RECEIVED
Вот так это выглядит:
Хмм... Что-то не получается картинку вставить. Прикреплю файлом.

Вот тут в дело вступает TextBox, который Вы помогли мне сделать :-) Он запускает макрос который сохраняет данные. Тоже  прикреплю для примера.
Когда сохранение данных произошло, в ячейке A1 теперь появляется слово FINISHED. Снова вступает в работу Ваш TextBox и запускает макрос formula, который долже отправить в ячейку A1 такую же ссылку, но с изменением акции. которую он должен взять из ячейки A3, а предыдущую должен был брать из A2.

Наверное снова сумбурно все объяснил... Простите, просто очень ограничен во времени...
 
Посмотрите, может так? Кнопка сброса - обнуление переменной: можно начать заново перебор ячеек. Только нет ясности вот с чем: Вы отправили запрос, сервер (сайт) довольно оперативно вернул Вам ответ - макрос отправляет второй запрос и... Это всё ведь произойдёт довольно быстро - какой интервал?
И зачем Вы прикрепили файл AAL?
 
Все стало работать автоматически! :-)
НО!
Цитата
Юрий М написал:
Вы отправили запрос, сервер (сайт) довольно оперативно вернул Вам ответ - макрос отправляет второй запрос и... Это всё ведь произойдёт довольно быстро - какой интервал?
Действительно, в сохранившихся файлах одинаковые данные, принадлежащие одному инструменту. Получается что макрос все подходы сохранял одни и те же данные... Вы ведь об этом и предупоеждали?...
Мой расчет был на то что каждое последующее действие начинается после окончания предыдущего. Для этого и нужен был макрос, который Вы любезно написали в предыдущей теме. Немного его видоизменил, добавив еще одну строку:

Код
Private Sub TextBox1_Change()
    If Me.TextBox1 Like "*" & "RECEIVED" & "*" Then Call fetchHistoricalData
    If Me.TextBox1 Like "*" & "FINISHED" & "*" Then Call formula
End Sub

Таким образом все должно было быть последовательно. Почему это не происходит не могу понять...

Ведь после появления RECEIVED все данные подготовлены, а после появления FINISHED, они уже должны быть записаны в файл.

В чем же кроется моя ошибка в логике?...

Файл AAL прикрепил на всякий случай, если вдруг вам что-то прояснит знание о том как выглядят получаемые данные.

 
Предпологаю, что проблема возможно в том что макросы работают не синхронно. Т.е. почему-то не дожидаются завершения предыдущей операции?
Попробовал заменить i на k, которое используется для цикла перехода от ячеки  к ячейке в макросе сохраняющем данные. Ничего не изменилось, работает также- во всех файлах одни и те же данные.
 
Цитата
krest написал:
Предпологаю, что проблема возможно в том что макросы работают не синхронно. Т.е. почему-то не дожидаются завершения предыдущей операции
Такого быть не должно: если два макроса вызываются поочерёдно, то второй не начнёт свою работу до тех пор, пока не отработает первый.
Про сохранённые в файлах данные: вообще не смотрел в ту сторону, так как задача стояла совсем другая - подменять каждый раз часть строки данными из ячеек.
 
Юрий, огромная Вам признательность! Вы мне очень помогли!
Подставляется все правильно! :-)
Попробую дальше сам, если не получится открою новую тему.
Страницы: 1
Наверх