首页 文章

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

提问于
浏览
1

我正在尝试使用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天 . 字母“a”后面的时间戳似乎随着我调用该URL而改变 .

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

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

1 回答

  • 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
    

相关问题