Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
VBA API запрос, ответ API
 
Попытался при помощи функций описанных по ссылке провести преобразование. Результата не дало.
https://excelvba.ru/code/URLEncode

После преобразования тот же ответ:{"response":{"GeoObjectCollection":{"metaDataProperty":{"GeocoderResponseMetaData":{"request":"ìîñêâà","results":"10","found":"0"}},"featureMember":[]}}}
VBA API запрос, ответ API
 
ТОесть. В первом случае я просто не вижу этого ответа из за кодировки?? ухххх.
То есть мне нужно взять в своем макросе переменную txt которую я получил методом txt = .responsetext из кирилического формата перевести в URL
т.е выполнить преобразования. Функцией, которая преобразовывает Unicode (русский текст) в URLencode (Percent Encoding) по ссылке выше
Так?
VBA API запрос, ответ API
 
Сформирую вопрос более понятным образом.
Как показано выше? я формирую запрос.
Ответ на этот запрос я присваиваю переменной "txt"
txt = .responsetext

Результат: текстовая переменная  txt  равна {"response":{"GeoObjectCollection":{"metaDataProperty":{"GeocoderResponseMetaData":{"request":"ìîñêâà","results":"10","found":"0"}},"featureMember":[]}}}

как видно в этом ответе ерунда.

Если просто кликнуть на запрос то в браузере появляется ответ:
{"response":{"GeoObjectCollection":{"metaDataProperty":{"GeocoderResponseMetaData":{"request":"москва","results":"10","found":"1"}},"featureMember":[{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"precision":"other","text":"Россия, Москва","kind":"province","Address":{"country_code":"RU","formatted":"Россия, Москва","Components":[{"kind":"country","name":"Россия"},{"kind":"province","name":"Центральный федеральный округ"},{"kind":"province","name":"Москва"}]},"AddressDetails":{"Country":{"AddressLine":"Россия, Москва","CountryNameCode":"RU","CountryName":"Россия","AdministrativeArea":{"AdministrativeAreaName":"Москва"}}}}},"name":"Москва","description":"Россия","boundedBy":{"Envelope":{"lowerCorner":"36.803079 55.142226","upperCorner":"37.967466 56.021286"}},"uri":"ymapsbm1://geo?data=Cgg1MzAwMDA5NBIa0KDQvtGB0YHQuNGPLCDQnNC-0YHQutCy0LAiCg2GeBZCFQEGX0I,","Point":{"pos":"37.617698 55.755864"}}}]}}}

и это уже прямо то что нужно.

Вопрос.
1.Как мне используя VBA получить ответ как во втором случае ( при клике) и записать его в переменную стринг = txt ( а из текстовой переменной я уже извлеку все что мне нужно)
2. Почему мой макрос вместо нормального ответа дает ерунду.
VBA API запрос, ответ API
 
ОГО))
Действительно по ссылке дает результат)))
А почему я немогу его прочитать  командой
txt = .responsetext ???

Прошу подсказать как результат по ссылке мне запихать в переменную??
VBA API запрос, ответ API
 
чудо чудное
Так я в макросе и поправил
у меня такой ответ что не так?
{"response":{"GeoObjectCollection":{"metaDataProperty":{"GeocoderResponseMetaData":{"request":"ìîñêâà","results":"10","found":"0"}},"featureMember":[]}}}

Может библиотеки не хватает?
Изменено: GendalfGreen - 05.06.2025 15:16:37
VBA API запрос, ответ API
 
URL дописал.
Может это чтото связано с правилами чтения JSON ответов?
VBA API запрос, ответ API
 
Добрый день!
Формирую следующий запрос для получения координат города Москва и не могу получить ответ.

Private Sub CommandButton1_Click()
Dim objHTTP As Object
Dim url, inn, txt, kapcha, uuu As String
Dim n, k As Long
Set objHTTP = CreateObject("MSXML2.XMLHTTP")

With objHTTP
url = "https://geocode-maps.yandex.ru/v1/?apikey=b5f75702-20a9-4ddd-826f-88af3d64409d&geocode=москва&format=json"
.Open "GET", url, False
.setRequestHeader "Content-Type", "application/json; charset=utf-8"
.setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.56"
.Send

txt = .responsetext
Debug.Print txt

End With

End Sub

В ответ приходят пустые заголовки...((((
Проверял запрос через сайт Online API Tester - Free Powerful API Testing Tool | ConversionTab  там все норм. Ответ идет.

Может что-то связано с особенностью получения API ответа Json ??
Прошу помощи с решением этого вопроса.
Изменено: GendalfGreen - 05.06.2025 14:59:46
Запуск События, Удаленный запуск события Change()
 
Подскажите плизз
Есть код работающий по событию:

TextBox5_Change()
.......
End Sub

Как запустить этот код принудительно? из другого места программы при изменении TextBox5.Text
QueryTables.Add смещение
 
Форумчане добрый день!
Прошу хелпа. Суть вопроса следующая:
Написал код для запроса с сайта телефонных кодов сотовых операторов.

Sub telecod(cod As String)

Dim x, z, k, zz As Integer
Dim q, w, w1, w2, s, ss, sss, kod As String
Dim wq, qqq As String
Dim f As Boolean

q = Right(cod, 3)
Worksheets("900").Activate

   With ActiveSheet.QueryTables.Add(Connection:= _
       "URL;https://www.kody.su/mobile/" & q, Destination:=Range("$A$1"))
       
       .Name = "telecod"
       .FieldNames = True
       .RowNumbers = False
       .FillAdjacentFormulas = False
       .PreserveFormatting = True
       .RefreshOnFileOpen = False
       .BackgroundQuery = True
       .RefreshStyle = xlInsertDeleteCells
       .SavePassword = False
       .SaveData = True
       .AdjustColumnWidth = True
       .RefreshPeriod = 0
       .WebSelectionType = xlEntirePage
       .WebFormatting = xlWebFormattingNone
       .WebPreFormattedTextToColumns = True
       .WebConsecutiveDelimitersAsOne = True
       .WebSingleBlockTextImport = False
       .WebDisableDateRecognition = False
       .WebDisableRedirections = False
       .Refresh BackgroundQuery:=False
   End With
End Sub

Все работает, на лист выводит таблицу соответствия, НО при повторном запроса таблица размещается не на том же месте а со смещением вправо.
Как сделать так чтобы при следующем запросе таблица размещалась на том же месте а не убегала?
Скорее всего надо удалить существующую безвозвратно вместе с соединением но как?
Страницы: 1
Наверх