2016年7月27日 星期三

excel介接api:元件篇

最近花了一點時間,研究了一下如何使用excel介接api的部分。其中其實做了很多嘗試,也花了很多時間在繞圈子。網路上提及這方面的技巧或是紀錄的文章也偏少,所以在這裡做個紀錄與分享。

其實現在各家券商在提供api界接服務的同時,也同時會提供一些範例。只是範例往往拿到自己的電腦,就會出現你預期內不應發生的錯誤。而券商的人員能個協助解決這個問題的人可說是少之又少,在這邊要推薦康和期貨的何志鵬大大,具有一般營業員所沒有的資訊能力,在這方面能夠提供給我很多協助。

這次的嘗試,主要是以康和的api為主。

以康和的文件為例,在執行最基本的下單功能前,要先將他的元件初始化

Public oSgtpocxapi As Object 
    If oSgtpocxapi Is Nothing Then 
        ' Set oSgtpocxapi = CreateObject("SGTPOCXAPI.SgtpOcxApiCtrl.3") 
        Set oSgtpocxapi = Sheet2.SgtpOcxApi1
        oSgtpocxapi.InitAPIOrder 
    End If

但是實際在執行這一段時,一開始會出現找不到元件的錯誤訊息。
要排除此問題,一開始要插入康和的元件

插入方法如下:
在excel的開發人員頁籤內,按下插入,並找到康和的元件Sgtpocxapi Control
這個動作是指:


在這裡,選取插入後,找到ActiveX控制項,並選擇插入其他控制項


但是如果使用的是office 2010,這裡很可能會遇到第二個問題。
就是找不到Sgtpocxapi Control

這個問題其實也卡了我很久,後來在多方測試後,發現如果券商提供的api是32位元,就必須使用32位元的office才能夠找到這個元件。而各個券商提供的api也各有不同,大家在自己試著接api時一定要注意這個問題。

如果能夠順利找到這個ocx元件並引用到excel內,以康和的api為例,他的長相會像是一個計時器timer

而這個元件也就是前述程式碼中Sheet2.SgtpOcxApi1。如果仔細觀察康和提供的範例,其實也會觀察到這個元件一開始就已被引用進來。

附帶一提,每家券商提供的元件被引用出來的長相各不同。舉例來說,元大的api元件看起來會像是一個icon。


如果能夠成功引用這個ocx元件,並且成功初始化,就可以嘗試使用api的login function看能否登入成功並下單。


沒有留言:

張貼留言