前回「こっそり学ぶC++」という記事を書きました。そこではVisual Studioを開発環境として使用しましたが、けしてお安くはない。そこでもっと安く、かつ手軽にプログラミングする方法はないかと。ありまずぜ旦那・・・そう、Excel VBAです。Windowsユーザーならインストールしているであろう表計算ソフトの代表格Excelに組み込まれている「Visual Basic for Applications(VBA)」。Excelには処理を自動化する「マクロ」という機能がありますが、そのコアとなっているのがVBAです。今回はこのVBAで、「こっそり学ぶC++」で作成したサンプルと同等のプログラムを構築してみたいと思います。
準備
Excel2013 を使って VBA (Visual Basic for Applications) のサンプルを構築する準備です。まず計測器との通信をおこなう制御ライブラリ(KI-VISA)をインストールします。KI-VISAのインストールについては、「こっそり学ぶC++(前編)」の3ページ目を参照してください。
インストールが上手くいったら、今度は、「こっそり学ぶC++(後編)」の1ページ目にある(写真7)と同じ画面を表示してみてください(写真1)。

写真1
この画面で「visa32.bas」というファイルの中身があとで VBAのプログラミングで必要になりますので、メモ帳で開いておきましょう(写真2)。

写真2
VBAによるプログラミング
Excelを起動してオプション画面を表示し、リボンの [開発] タブを表示するように設定してください(写真3)。

写真3
次に[開発] タブを選択して、Visual Basicをクリックします(写真4)。

写真4
Visual Basic Editor画面が起動しました(写真5)。

写真5
[挿入]メニューを選択して、標準モジュール をクリックします(写真6)。
![]()
写真6
先ほどメモ帳で開いておいた「visa32.bas」というファイルの中身をすべてコピーし、モジュール1(コード)にペーストします(写真7)。
写真7
ペーストすると最初の1行目が、赤色表示(エラー)になっていますので、コメントアウト(「 ‘ 」を先頭に入れると実行コードではなく注記扱いになります)しましょう(写真8)。
写真8
次に、シート上に、ボタンを作成します。[開発] タブを選択して、挿入から”ボタン”コントロールをクリックし、続けてシート上をクリックします(写真9)。
![]()
写真9
シートをクリックした瞬間、「マクロの登録」画面が表示されます。そして「新規作成」ボタンをクリックします(写真10)。

写真10
Visual Basic Editor画面に、モジュール2(コード)が表示されます(写真11)。
写真11
これで準備は、整いました。次はいよいよコードの実装です。
コードの実装
次のコードを、Sub ボタン1_Click() と End Sub の間に、入力します(写真12)。
Dim defaultRM As Long
Dim status As Long
Dim vi As Long
Dim count As Long
Dim txCmd As String
Dim rxCmd As String * 100
status = viOpenDefaultRM(defaultRM)
If status <> VI_SUCCESS Then
MsgBox ("初期化エラー")
Exit Sub
End If
status = viOpen(defaultRM, "USB0::0x0B3E::0x1014::nb003716::0::INSTR", VI_NULL, VI_NULL, vi)
If status <> VI_SUCCESS Then
MsgBox ("オープンエラー")
Exit Sub
End If
txCmd = "*idn?"
rxCmd = Space(100)
status = viWrite(vi, txCmd, Len(txCmd), count)
If status <> VI_SUCCESS Then
MsgBox ("送信エラー")
Exit Sub
End If
status = viRead(vi, rxCmd, 100, count)
If status <> VI_SUCCESS Then
MsgBox ("受信エラー")
Exit Sub
End If
viClose (vi)
viClose (defaultRM)
rxCmd = Replace(rxCmd, vbCrLf, "")
Range("B2").Value = Trim(rxCmd)写真12
シートに作成された 「ボタン1」 をクリックしてみましょう。B2セルに返事が返ってくるはずです(写真13)。
![]()
写真13
まとめ
いかがでしょうか? Visual Basicは比較的扱い易い言語ではないかと思います。ぜひ「こっそり学ぶC++」の記事もあわせてお読みいただき、トライしてみて欲しいと思います。
なお、この習作のサンプルを下記からダウンロードできます。
参考にしてみてください。






