Страницы: 1
RSS
Макрос курса валют, Сбой работы макроса обновления курса валют
 
Всем добрый!

На днях перестал работать макрос курса валют (выложенные на форуме в предыдущих темах - также не работают...),
в связи с чем очень прошу помочь в его ремонте.

Ошибка ссылаеся на строку - Курс = CCur(Mid(Ответ, InStr(InStr(1, Ответ, "EUR"), Ответ, "</TR>") - 18, 7))

Файл в приложении.
К сожалению не могу интегрировать в работу другие решения - файлом пользуются на общем доступе
много людей далеких от экселя......

Заранее очень благодарю за помощь!!!
 
у меня работает.
 
Не подскажете в чем может быть причина?
 
какая ошибка?
 
Вот такого плана(((
 
TimurKhay В этот момент наведите курсор на переменную ответ - что она показывает?
У меня тоже работает.
Изменено: skais675 - 03.06.2019 14:14:23
 
Вот так?
 
TimurKhay Текст не виден целиком - выведите его через Msgbox или в соседнюю ячейку, чтобы можно было рассмотреть.
Вставьте это
Код
 Ответ = UCase(oHttp.responseText)
   Cells(ActiveCell.Row, "E") = Ответ
   Cells(ActiveCell.Row, "D") = Mid(Ответ, InStr(InStr(1, Ответ, "EUR"), Ответ, "</TR>") - 18, 7)
   Курс = CCur(Mid(Ответ, InStr(InStr(1, Ответ, "EUR"), Ответ, "</TR>") - 18, 7))
  запустите с ошибкой сохраните и приложите файл сюда.
Изменено: skais675 - 03.06.2019 15:20:03
 
Вставил и сохранил с ошибкой.
Файл в приложении.
 
TimurKhay Скопируйте при русской расскладке, у Вас Там ????? см внимательнее, и после ошибки в столбце D и E должен появиться текст.
Запустите это файл и перешлите.
 
Я скопировал при русской раскладке....
Сделаю еще раз сейчас
 
Скопировал данные еще раз. Появились данные в столбцах
 
Причина ошибки - разделитель дробной доли на проблемном компьютере - точка, а сайт ЦБ возвращает запятую.
Владимир
 
Sokol92 подскажите а что можно в этом случае сделать?
 
TimurKhay
Replace
Изменено: skais675 - 03.06.2019 15:45:26
 
Ко всем Вашим бедам еще и курс чешской кроны завышен в файле в 10 раз. Вообще, лучше выбирать данные в формате XML. Например, так (прототип макроса CBR взят на сайте Дмитрия Щербакова):
Код
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, [A:A]) Is Nothing Or Target.Address(0, 0) = "A1" Then Exit Sub
    Cancel = True
    If Not IsDate(Target) Then Exit Sub
    Target.Offset(, 1) = CBR("EUR", Target)
    Target.Offset(, 2) = CBR("CZK", Target)
End Sub

' From   : http://www.excel-vba.ru/chto-umeet-excel/poluchit-kurs-valyut-ot-sberbanka/
'---------------------------------------------------------------------------------------
Function CBR(ByVal Cur, Optional ByVal CurDate) As Double
    Dim xmDoc As Object, date_req$
    Set xmDoc = CreateObject("msxml2.DOMDocument")
    date_req = "?date_req=" & Format(IIf(Not IsMissing(CurDate), CurDate, Date), "DD.MM.YYYY")
    xmDoc.async = 0: xmDoc.Load ("http://www.cbr.ru/scripts/XML_daily.asp" & date_req)
    With xmDoc.SelectSingleNode("*/Valute[CharCode='" & UCase(Cur) & "']")
        CBR = TextToNumber(.ChildNodes(4).Text) / Val(.ChildNodes(2).Text)
    End With
    Set xmDoc = Nothing
End Function

Function TextToNumber(ByVal txt)
  Dim s
  s = Mid(1 / 2, 2, 1)
  TextToNumber = CDbl(Replace(txt, IIf(s = ".", ",", "."), s))
End Function
Изменено: sokol92 - 03.06.2019 15:49:16
Владимир
 
С курсом кроны все ок - потом идет пересчет. Просто курс за 10 руб. на сайте.

Попробую попросить переставить Версию Экселя - мне тоже показалось странным что вместо заяптых перед десятками точки - как на американский манер.
Поставили новый компьютер в пятницу - скорее всего вы правы - там не русская версия.
 
Макрос из #16 должен работать с любыми версиями и региональными настройками. В строке 7 умножьте курс на 10 (для совместимости со старой версией).
Код
Target.Offset(, 2) = CBR("CZK", Target) * 10
Изменено: sokol92 - 03.06.2019 15:59:29
Владимир
 
разделитель настраивается в винде не нужно эксель переставлять.
 
TimurKhay #15 будет работать - сделал для евро, сделайте по аналогии и для кроны. Настройки всего лишь можно изменить есть сиcтемные и в самом excel (не нужно ничего переставлять). Но лучше чтоб не зависить от этого, пробуйте новый пример из #15.
Изменено: skais675 - 03.06.2019 15:55:47
 
Sokol92 а есть возможность восстановить в макросе отражение курса чешской кроны как было?
 
Ответил в #18.
Владимир
 
я уже так и сделал просто изначально было бы удобнее конечно
 
но в любом случае всем огоромное спасибо
 
Успехов!
Владимир
Страницы: 1
Наверх