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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2011, 12:36   #1
Toe
 
Регистрация: 15.07.2011
Сообщений: 5
Вопрос Макрос на взаимодействие с сервисом на сайте.

Добрый день.
Есть одна мудрёная задачка.
Обрисую ситуацию:

Имеем столбец, в котором указаны три телефонных номера в семизначном виде без дефисов (0123456, 0010101 и тд).

Имеем интернет-сервис по проверке замены кода АТС номера по адресу: http://mgts.ru/switcher/client/changelist/ (не реклама, если что).

И теперь задача:
Каждый номер поочерёдно копипаститься в поле проверки номера на сайте, после чего там он проверяется (жмётся кнопка), и результат вбивается уже обратно в соответствующие старым номерам ячейки, но уже в полном виде, только без 8 и дефисов.

Например:

012-34-56 -> 4950123456

P.S.: Сервис выдаёт результат в двух видах: это либо изменённый номер, где красным подсвечиваются изменённые цифры, либо сообщение, что номер не менялся.

И, наконец, главный вопрос:
Возможно ли это сделать средствами MS Excel и VBA, или же здесь придётся задействовать спец.софт?

Надеюсь на ответы уразумевших суть проблемы.
Toe вне форума Ответить с цитированием
Старый 15.08.2011, 12:46   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
И, наконец, главный вопрос:
Возможно ли это сделать средствами MS Excel и VBA, или же здесь придётся задействовать спец.софт?
Да можно.Изучайте DOM.
немного надо с парсингом помучиться
Примеры есть на форуме.Ключевое слово для поиска Интернет.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 15.08.2011, 14:15   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Как уже сказал Сергей, это сделать можно, но... вряд ли вы сами с этим справитесь.
Сложный макрос получится. Все эти POST и GET запросы средствами VBA...
Пример такого запроса есть у меня на сайте:
Код:
Sub SetRegionByCode(ByVal code As Long)
    On Error Resume Next
    If WebBrowser Is Nothing Then Set WebBrowser = CreateObject("InternetExplorer.Application")
    Dim URL As String, Flags As Long, TargetFrame As String, PostData() As Byte, Headers As String
    If code <= 0 Then MsgBox "Неверно задан регион поиска!", vbCritical, "Ошибка настройки поиска": Exit Sub

    URL = "http://tune.yandex.ru/pages/region/do/save.xml": Flags = 0: TargetFrame = ""
    PostData = "retpath=http%253A%252F%252Fmarket.yandex.ru%252Fsettings.xml&region_id=" & code
    PostData = StrConv(PostData, vbFromUnicode)
    Headers = "Content-Type: application/x-www-form-urlencoded" & vbCrLf

    WebBrowser.Navigate URL, Flags, TargetFrame, PostData, Headers
    While WebBrowser.Busy Or (WebBrowser.readyState <> 4): DoEvents: Wend
End Sub

Мой вам совет: найдите в интернете таблицу соответствия старой и новой нумерации - и сделаете всё при помощи несложных формул
(если не получится - с этим мы вам поможем на форуме)

Если же так уж нужно проверять номера именно через указанный сайт - то остаётся разве что заказывать такой макрос у кого-нибудь из спецов.
EducatedFool вне форума Ответить с цитированием
Старый 15.08.2011, 14:52   #4
Toe
 
Регистрация: 15.07.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Как уже сказал Сергей, это сделать можно, но... вряд ли вы сами с этим справитесь.
Сложный макрос получится. Все эти POST и GET запросы средствами VBA...
Пример такого запроса есть у меня на сайте:
Код:
Sub SetRegionByCode(ByVal code As Long)
    On Error Resume Next
    If WebBrowser Is Nothing Then Set WebBrowser = CreateObject("InternetExplorer.Application")
    Dim URL As String, Flags As Long, TargetFrame As String, PostData() As Byte, Headers As String
    If code <= 0 Then MsgBox "Неверно задан регион поиска!", vbCritical, "Ошибка настройки поиска": Exit Sub

    URL = "http://tune.yandex.ru/pages/region/do/save.xml": Flags = 0: TargetFrame = ""
    PostData = "retpath=http%253A%252F%252Fmarket.yandex.ru%252Fsettings.xml&region_id=" & code
    PostData = StrConv(PostData, vbFromUnicode)
    Headers = "Content-Type: application/x-www-form-urlencoded" & vbCrLf

    WebBrowser.Navigate URL, Flags, TargetFrame, PostData, Headers
    While WebBrowser.Busy Or (WebBrowser.readyState <> 4): DoEvents: Wend
End Sub

Мой вам совет: найдите в интернете таблицу соответствия старой и новой нумерации - и сделаете всё при помощи несложных формул
(если не получится - с этим мы вам поможем на форуме)

Если же так уж нужно проверять номера именно через указанный сайт - то остаётся разве что заказывать такой макрос у кого-нибудь из спецов.
В том-то и дело, что сервис выдает значения, которые по таблицам не найти. И сделано это специально, чтобы мы помучались... Естественно, сам я это не сделаю,но готов рассмотреть возможность заказного выполнения задачи с оплатой.
Toe вне форума Ответить с цитированием
Старый 15.08.2011, 15:03   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
И сделано это специально, чтобы мы помучались...
Сомневаюсь.
Подобная информация всегда публикуется - сам работаю в телефонной компании, так что немного в теме.

Цитата:
сервис выдает значения, которые по таблицам не найти
Ну неужели уж так прямо и не найти?
Может, эта табличка подойдёт?
А если на поиски потратить не 2 минуты (как я), а минут 20 - наверняка найдётся ещё несколько таблиц.
EducatedFool вне форума Ответить с цитированием
Старый 15.08.2011, 15:54   #6
Toe
 
Регистрация: 15.07.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Сомневаюсь.
Подобная информация всегда публикуется - сам работаю в телефонной компании, так что немного в теме.


Ну неужели уж так прямо и не найти?
Может, эта табличка подойдёт?
А если на поиски потратить не 2 минуты (как я), а минут 20 - наверняка найдётся ещё несколько таблиц.
Да я в общем-то в том же направлении работаю и почти все московские АТС уж наизусть знаю Так вот самое забавное, что МГТС порой меняет не только коды и первые три номера. Для примера могу дать случайный номер: 202-50-00. Проверьте его через указанный сервис.

К тому же, все альтернативные таблицы как правило основаны на устаревших версиях от МГТС, которые были доступны до того, как Лебедев и компания не перерисовала им сайт. Стоит ли говорить, что это было мягко говоря "зря"?...
Toe вне форума Ответить с цитированием
Старый 15.08.2011, 16:24   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Естественно, сам я это не сделаю,но готов рассмотреть возможность заказного выполнения задачи с оплатой.
Пишите в личку,я думаю договоримся.
Изложите.как у вас хранятся телефоны для проверки,и проверять все.или выборочно
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос постоянно обрабатывает события. При открытии другой книги макрос обрывается. Ples Microsoft Office Excel 8 17.12.2016 18:15
Как организовать обмен информацией между программой и собственной службой (сервисом) pro2011 Win Api 8 20.01.2011 04:11
Взаимодействие-управление своим сервисом Alter Общие вопросы Delphi 5 20.08.2010 10:32
Работа с сервисом Google Maps S.T.A.L.K.E.R. Общие вопросы C/C++ 1 16.03.2010 23:43
Макрос вставки файлов в листы-Необходимо изменить ниже приведённый макрос as-is Microsoft Office Excel 4 25.02.2010 07:51