2015-04-07 3 views
0

Я использую excel 2010. У меня есть следующая функция vba, которая извлекает мне валюту из yahoo finance. Однако моя проблема заключается в том, что я использую немецкую версию Excel, а . - в этой версии a ,.Заменить. до, в выбранной валюте сумма yahoo finance

Поэтому преобразованные валюты выглядеть:

enter image description here

Это функция, я использую:

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?

Я благодарю ваши ответы!

+1

Я думаю, что вы пробовали грязный: 'MYCURRENCYEXCHANGER = CDbl (Заменить (myHTTP.responseText,", ",". "))' Потому что CDbl должен вернуть вам числовое значение, которое не будет считаться текст в Excel любой версии, которую вы используете ... – R3uK

+1

В вашем примере нет '.' для замены, не хотите ли вы делить на 10000? – pnuts

+0

Поскольку 'myHTTP.responseText' кажется возвратным строковым представлением чисел с' .' как десятичным разделителем, я просто использовал бы 'Val' вместо' CDbl'. 'MYCURRENCYEXCHANGER = Val (myHTTP.responseText)' –

ответ

1

Вы можете использовать функцию «Заменить», чтобы достичь этого достаточно просто.

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 

    Replace(myHTTP.StatusText, ".", ",") 

    If Not (WorksheetFunction.IsNumber(myHTTP.responseText)) Then MYCURRENCYEXCHANGER = 0 
    MYCURRENCYEXCHANGER = CDbl(myHTTP.responseText) 
    Exit Function 

ServerErrorHandler: 
    MsgBox "Error. Could not convert currency" 

End Function 

Заменить (строка, SearchText ReplaceText) функция изменит все вхождения SearchText по ReplaceText в строке.

Я не тестировал его, но я уверен, что это должно сделать трюк.