(3)Monex Joo API のExcel Vba 見本をつくってみました。
3.------- 標準モジュール名ごとに貼り付ける内容 -------------
'-----------------------------------------
'### 標準モジュール名:userAPISetTimer ###
'-----------------------------------------
'### 標準モジュール名:userAPISetTimer ###
'-----------------------------------------
Option Explicit
'(標準モジュール)
Public Declare Function SetTimer Lib "user32" _
(ByVal hwnd As Long, ByVal nIDEvent As Long, _
ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function SetTimer Lib "user32" _
(ByVal hwnd As Long, ByVal nIDEvent As Long, _
ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" _
(ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
(ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
' タイマーを止める
Sub kills()
' Application.hwnd は最上位のWinハンドル取得
'Debug.Print Application.hwnd
KillTimer Application.hwnd, 31000& 'id
End Sub
' Application.hwnd は最上位のWinハンドル取得
'Debug.Print Application.hwnd
KillTimer Application.hwnd, 31000& 'id
End Sub
'------------------------------------
'### 標準モジュール名:userJooChk ###
'------------------------------------
'### 標準モジュール名:userJooChk ###
'------------------------------------
Option Explicit
' APIサーバ起動チェック
Public Function ChkAPISV() As Boolean
Dim chkprice
ChkAPISV = False
'sWkProcess = "APIサーバ起動チェック"
'+--- レート取得関数: GetRealtimeRateCache() ---+
chkprice = omFXAPI.GetRealtimeRateCache("USD/JPY", "bidPriceValue")
If Left(chkprice, 16) = "APIサーバを起動してください。" Then
sWkDescription = chkprice
Exit Function
Else
Debug.Print "API_ok"
End If
ChkAPISV = True
Dim chkprice
ChkAPISV = False
'sWkProcess = "APIサーバ起動チェック"
'+--- レート取得関数: GetRealtimeRateCache() ---+
chkprice = omFXAPI.GetRealtimeRateCache("USD/JPY", "bidPriceValue")
If Left(chkprice, 16) = "APIサーバを起動してください。" Then
sWkDescription = chkprice
Exit Function
Else
Debug.Print "API_ok"
End If
ChkAPISV = True
End Function
' サンプル1 (リアルタイムレート受信開始を設定します。)
' 開始準備ボタンから呼び出される。
' 開始準備ボタンから呼び出される。
Sub realtimeRateStart()
Dim omFXAPI As New Joo_FXAPI.ComApi
Dim oWkPairResult As PairResultEntity
Dim oWkCurrencyPair(0) As Variant
Const error_message As String = "エラーが発生しました。" & ", "
Dim omFXAPI As New Joo_FXAPI.ComApi
Dim oWkPairResult As PairResultEntity
Dim oWkCurrencyPair(0) As Variant
Const error_message As String = "エラーが発生しました。" & ", "
oWkCurrencyPair(0) = ECurrencyPair_USDJPY
'+---
Set oWkPairResult = omFXAPI.RealtimeRate(oWkCurrencyPair, True, Nothing)
'+--- 通貨ペアの項目にvbNullString=(0)を指定すると全部の通貨ペアになる ---+
'Set oWkPairResult = omFXAPI.RealtimeRate(vbNullString, True, Nothing)
If oWkPairResult.returnCode <> 0 Then
MsgBox error_message & oWkPairResult.returnCode & ", " _
& oWkPairResult.returnMessage, vbOKOnly + vbCritical
End If
Set omFXAPI = Nothing
'+---
Set oWkPairResult = omFXAPI.RealtimeRate(oWkCurrencyPair, True, Nothing)
'+--- 通貨ペアの項目にvbNullString=(0)を指定すると全部の通貨ペアになる ---+
'Set oWkPairResult = omFXAPI.RealtimeRate(vbNullString, True, Nothing)
If oWkPairResult.returnCode <> 0 Then
MsgBox error_message & oWkPairResult.returnCode & ", " _
& oWkPairResult.returnMessage, vbOKOnly + vbCritical
End If
Set omFXAPI = Nothing
End Sub
'サンプル2(リアルタイムレート受信停止を設定します。)
'このサンプル2を実行することにより、リアルタイムレートの受信が停止されます。
'このサンプル2を実行することにより、リアルタイムレートの受信が停止されます。
Sub realtimeRateStop()
Dim omFXAPI As New Joo_FXAPI.ComApi
Dim oWkPairResult As PairResultEntity
Dim oWkCurrencyPair(0) As Variant
Const error_message As String = "エラーが発生しました。" & ", "
oWkCurrencyPair(0) = ECurrencyPair_EURJPY
Set oWkPairResult = omFXAPI.RealtimeRate(oWkCurrencyPair, False, Nothing)
If oWkPairResult.returnCode <> 0 Then
MsgBox error_message & oWkPairResult.returnCode & ", " _
& oWkPairResult.returnMessage, vbOKOnly + vbCritical
End If
Dim omFXAPI As New Joo_FXAPI.ComApi
Dim oWkPairResult As PairResultEntity
Dim oWkCurrencyPair(0) As Variant
Const error_message As String = "エラーが発生しました。" & ", "
oWkCurrencyPair(0) = ECurrencyPair_EURJPY
Set oWkPairResult = omFXAPI.RealtimeRate(oWkCurrencyPair, False, Nothing)
If oWkPairResult.returnCode <> 0 Then
MsgBox error_message & oWkPairResult.returnCode & ", " _
& oWkPairResult.returnMessage, vbOKOnly + vbCritical
End If
Set omFXAPI = Nothing
End Sub
End Sub
'-------------------------------------
'### 標準モジュール名:useVariable ###
'-------------------------------------
'### 標準モジュール名:useVariable ###
'-------------------------------------
Option Explicit
Public omFXAPI As New Joo_FXAPI.ComApi
Public oWkPairResult As PairResultEntity
Public prevContract As ContractNoticeEntity
Public oWkPairResult As PairResultEntity
Public prevContract As ContractNoticeEntity
Public nIDEvent As Long
'Public sWkProcedure As String
'Public sWkProcess As String
Public sWkDescription As String
'Public sWkProcedure As String
'Public sWkProcess As String
Public sWkDescription As String
Public USDJPY_bidPrice As String, USDJPY_askPrice As String 'USDJPY
Sub realtimeRateDisp()
On Error Resume Next '←必須。これがないとExcelが落ちる。
Dim iWkorderPrice As New PriceUnitEntity '●現在値など
Set iWkorderPrice = omFXAPI.GetRealtimeRateCache("USD/JPY", "bidPrice")
'変数にレートを受け取る
USDJPY_bidPrice = omFXAPI.GetRealtimeRateCache("USD/JPY", "bidPriceValue") 'USDJPY
USDJPY_askPrice = omFXAPI.GetRealtimeRateCache("USD/JPY", "askPriceValue") '
'ラベルに変数のレートを出力する
UserForm1.USDJPYbid.Caption = Format(USDJPY_bidPrice, "##0.##0") 'bid
UserForm1.USDJPYask.Caption = Format(USDJPY_askPrice, "##0.##0") 'ask
Dim iWkorderPrice As New PriceUnitEntity '●現在値など
Set iWkorderPrice = omFXAPI.GetRealtimeRateCache("USD/JPY", "bidPrice")
'変数にレートを受け取る
USDJPY_bidPrice = omFXAPI.GetRealtimeRateCache("USD/JPY", "bidPriceValue") 'USDJPY
USDJPY_askPrice = omFXAPI.GetRealtimeRateCache("USD/JPY", "askPriceValue") '
'ラベルに変数のレートを出力する
UserForm1.USDJPYbid.Caption = Format(USDJPY_bidPrice, "##0.##0") 'bid
UserForm1.USDJPYask.Caption = Format(USDJPY_askPrice, "##0.##0") 'ask
End Sub