Excel VBA - 获取字符串中特定单词的行号

时间:2018-04-26 09:22:52

标签: excel vba excel-vba

我试图使用VBA在东京证券交易所获得股票价格。我搜索了很多API,但除了finance.google.com之外,没有一个拥有东京交易所的数据。但谷歌财务已停止工作,不再以json格式返回数据,所以我必须利用剩下的东西,从返回的字符串中提取数据。

以下是返回字符串的示例。

EXCHANGE%3DTYO
MARKET_OPEN_MINUTE=540
MARKET_CLOSE_MINUTE=900
INTERVAL=86400
COLUMNS=DATE,CLOSE,HIGH,LOW
DATA_SESSIONS=[MORNING,540,690],[AFTERNOON,750,900]
DATA=
TIMEZONE_OFFSET=540
a1522216800,2313,2324,2240
1,2298,2350,2242
2,2325,2336,2300
5,2252,2333,2246
6,2229,2257,2216 <--
7,2222,2238,2214
8,2262,2267,2220
9,2293,2313,2249
12,2338,2351,2300
13,2373,2392,2351
14,2386,2396,2323
15,2368,2395,2335
16,2391,2398,2375
19,2420,2439,2389
20,2378,2419,2363
21,2411,2428,2389
22,2384,2422,2381
23,2407,2426,2386
26,2437,2438,2389
27,2454,2468,2443
28,2453,2456,2418
29,2437,2422,2443 <<--

供您参考的网址 http://finance.google.com/finance/getprices?x=TYO&q=9143&i=86400&f=d,c,h,l

a1522216800是时间戳,以下行的第一个数字是以天为单位的间隔。 1是在1522216800之后的1天。字母表后面的时间戳&#34; a&#34;每当我调用该URL时,似乎会随着时间而改变。

我使用InStr()寻找&#34; a&#34;和Mid()提取时间戳并将其转换为日期格式,并将日间隔添加到提取日期以获取我的具体日期。 这就是问题,例如,我希望从时间戳开始29天,由&lt;&lt; - 表示,当我使用相同的InStr()寻找&#34; 29,& #34; VBA在&lt; - 返回字符串位置,因为它们具有相同的&#34; 29,&#34;在那条线上。我怎样才能得到我的预定日期?

如果finance.google.com的回复采用json格式,我的生活会更轻松。我不认为有一种方法可以将这些字符串转换成json吗?

1 个答案:

答案 0 :(得分:0)

看一下下面的例子:

Sub Test()

    Dim s
    Dim a

    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", "http://finance.google.com/finance/getprices?x=TYO&q=9143&i=86400&f=d,c,h,l", False
        .send
        s = .responseText
    End With
    a = Split(s, vbLf & "29,", 2)
    a = Split(a(1), vbLf, 2)
    a = Split(a(0), ",")

    MsgBox Join(a, vbCrLf)

End Sub
相关问题