Я использую excel 2010
. У меня есть следующая функция vba, которая извлекает мне валюту из yahoo finance. Однако моя проблема заключается в том, что я использую немецкую версию Excel, а .
- в этой версии a ,
.Заменить. до, в выбранной валюте сумма yahoo finance
Поэтому преобразованные валюты выглядеть:
Это функция, я использую:
Function MYCURRENCYEXCHANGER(SourceCur As String, DestCur As String) As Variant
Dim url As String
' http://quote.yahoo.com/d/quotes.csv?s=XXXYYY=X&f=l1 this is the link format where XXX is currency1 and YYY is currency2 '
url = "http://quote.yahoo.com/d/quotes.csv?s=" & SourceCur & DestCur & "=X&f=l1"
Dim myHTTP As New WinHttp.WinHttpRequest
myHTTP.Open "GET", url, False
myHTTP.send ""
If myHTTP.StatusText <> "OK" Then GoTo ServerErrorHandler
If Not (WorksheetFunction.IsNumber(myHTTP.responseText)) Then MYCURRENCYEXCHANGER = 0
MYCURRENCYEXCHANGER = CDbl(myHTTP.responseText)
Exit Function
ServerErrorHandler:
MsgBox "Error. Could not convert currency"
End Function
Любые рекомендации, как правильно конвертировать валюту, так что .
заменяется по ,
, когда вы получаете от yahoo finance?
Я благодарю ваши ответы!
Я думаю, что вы пробовали грязный: 'MYCURRENCYEXCHANGER = CDbl (Заменить (myHTTP.responseText,", ",". "))' Потому что CDbl должен вернуть вам числовое значение, которое не будет считаться текст в Excel любой версии, которую вы используете ... – R3uK
В вашем примере нет '.' для замены, не хотите ли вы делить на 10000? – pnuts
Поскольку 'myHTTP.responseText' кажется возвратным строковым представлением чисел с' .' как десятичным разделителем, я просто использовал бы 'Val' вместо' CDbl'. 'MYCURRENCYEXCHANGER = Val (myHTTP.responseText)' –