2017-02-08 9 views
0

私はUSDをEUROに変換するスプレッドシートを持っています。Excel 2010がWEBSERVICE()をVBAに置き換え

私はエクセル2013でそれを設計し、私はインターネットからの過去の為替レートを取得するために、新しい機能のWebサービスを使用し、ここAPI:

http://api.fixer.io/2017-01-07?base=USD&symbols=EUR

そして、私の式は以下のようになります。

=IF(OFFSET(INDIRECT("R[0]C",),0,-2)<>"",SUBSTITUTE(MID(WEBSERVICE("http://api.fixer.io/"&TEXT(EOMONTH(OFFSET(INDIRECT("R[0]C",),0,-2),0),"yyyy-mm-dd")&"?base=USD&symbols=CNY"),50,6),"}",""),"") 

説明: 現在のセルの左側にある2番目のセルが空でない場合は、Webデータを入力します。数式のパラメータは月の終了日で、この表のセルによっても計算されます。

テーブルに複数の行があり、これは私たちのために完全に機能していますが、一部のユーザーはまだExcel 2010以上になっていますが、VBAでこれを行う方法はありますか?

+1

VBAでこれを行う方法がありますが、いくつかの調査が必要です。 IEの自動化、Web解析/ Webのスクレイピングを見て、ノックできるものを見てください。一度作業することができたら、お手伝いします。 –

+0

ありがとう@Glitch_Doctor、私は1つのセルを行うためにVBAを得ることができますが、私はすべてのセルを自動的に取得する方法を知らない。私はPHPを知っていますが、VBAは私の裏庭ではありません。 – Godinall

+0

ああ、それはループとカウンターを使うことでしょう。かなりの作業ですが、@AxelRichterの甘いUDFがあります。これは、すべての痛みを克服するよりはるかに優れています。 –

答えて

2

VBA WEBSERVICE同等の最も単純なバージョンは、次のようになりますようなセル式としてUDF(ユーザ定義関数)として使用

Public Function myWEBSERVICE(strURL As String) As String 
Dim oWinHttp As Object 

Set oWinHttp = CreateObject("MSXML2.XMLHTTP") 

oWinHttp.Open "GET", strURL, False 
oWinHttp.send "" 

myWEBSERVICE = oWinHttp.ResponseText 

End Function 

A1日付が含ま

=mywebservice("http://api.fixer.io/"&TEXT(A1,"yyyy-mm-dd")&"?base=USD&symbols=CNY") 

参考のためresponseText Property (IXMLHTTPRequest)を参照してください。その例はJScriptにあり、VBAに変換する必要があります。

+0

@Axel Richterさん、ありがとうございました。あなたのソリューションをExcelで試してみましたが、「数式には認識できないテキストが含まれています」と表示され、#NAMEと表示されますか?細胞内で私はOffice 2013のFYIでWindows 10を使用しています。 – Godinall

+1

この関数は、デフォルトのVBAモジュール内に配置する必要があります。 –

+0

あなたはスターです!完璧に動作します! – Godinall

関連する問題