Excel VBAでJVLinkを使った競馬ソフトを開発する準備

JRAはJVDataという競馬データをソフトウェア開発者向けに配信しています。JVDataをダウンロードしたり読み込むために、JRAはJVLinkというサーバー通信モジュールを用意しています。競馬ソフト開発 > ソフトウェア開発キット(SDK) - JRA-VAN DataLab.にdllファイルや仕様書が入ったzipファイルがあります。

ダウンロードしたzipファイルにJVLinkのインストーラが入っていて、それでJVLinkをインストールできます。インストールしたら、JRA-VAN DataLab.の登録キーをJVLink設定画面に入力保存しておきます。

JVLinkはActiveXコントロールで、実体はdllファイルC:\Windows\SysWOW64\JVDTLAB\JVDTLab.dllです。Visual StudioなどのIDEにロードすると、JVLinkオブジェクトがコールできます。例えば、JVDataのレコードを読むにはJVLink.JVGetsメソッドを使うなど、JVLink仕様書にJVLinkオブジェクトのメソッドとプロパティの説明があります。

もし、使っているPCにExcelがインストールされているなら、Excel VBAはJVLinkを使う最も手っ取り早いIDEだと思います。

ただし、JVLinkを使うにはExcelは32bitでなければいけません。何もカスタマイズしないでMicrosoft Officeをインストールしたなら32bit版がインストールされるので意識する必要はありません。

Excelを起動して、開発 > 挿入 > 右下にあるコントロールの選択 > JVLink Class > OKの順にクリックすると開いているワークシートにJVLink ActiveXコントロールがロードできます。

ExcelにJVLinkオブジェクトをロードする手順

開いているワークシートのオブジェクト名がSheet1で、JVLink ActiveXコントロールのオブジェクト名がJVLink1の場合、標準モジュールやクラスモジュールから、Sheet1.JVLink1.と打つとインテリセンスが働いてJVLink1のメンバがポップアップ表示されます。

標準モジュールでJVLinkオブジェクトのメソッドとプロパティをコールする方法

JVLinkクラスのオブジェクトを定義して、ロードしているJVLinkオブジェクトをセットして使うこともできます。こうするとコードが短く済みます。

Sub HowToUseJVLink()

  Dim Jvl As JVLink

  Set Jvl = Sheet1.JVLink1

  Jvl.JVInit
  Jvl.JVClose

End Sub

あと、Office TANAKAはExcel VBAのプログラミングについて丁寧で詳しく説明していてとても便利なサイトです。わからないことがあると読んでいます。

EXCEL-VBA開発講座もクラスモジュールでオブジェクト指向ライクなプログラミングする方法や、コレクション(Collectionオブジェクト、Dictionaryオブジェクト)について書かれていて、有益です。

Kosuke Maeda / まえだこうすけ

「機械学習で競馬予想して勝てるのか?」をテーマに活動中! QiitaにはR、VBAなどのTipsを投稿しています。