コラム

いまさらVB、されどVB

前回「こっそり学ぶC++」という記事を書きました。そこではVisual Studioを開発環境として使用しましたが、けしてお安くはない。そこでもっと安く、かつ手軽にプログラミングする方法はないかと。ありまずぜ旦那・・・そ […]
投稿日-2018年1月

 

前回「こっそり学ぶ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

写真1

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

図2

写真2

VBAによるプログラミング

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

図3

写真3

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

図4

写真4

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

名称未設定

写真5

[挿入]メニューを選択して、標準モジュール をクリックします(写真6)。

図6

写真6

先ほどメモ帳で開いておいた「visa32.bas」というファイルの中身をすべてコピーし、モジュール1(コード)にペーストします(写真7)。

写真7

ペーストすると最初の1行目が、赤色表示(エラー)になっていますので、コメントアウト(「 ‘ 」を先頭に入れると実行コードではなく注記扱いになります)しましょう(写真8)。

写真8

次に、シート上に、ボタンを作成します。[開発] タブを選択して、挿入から”ボタン”コントロールをクリックし、続けてシート上をクリックします(写真9)。

図9

写真9

シートをクリックした瞬間、「マクロの登録」画面が表示されます。そして「新規作成」ボタンをクリックします(写真10)。

図10

写真10

Visual Basic Editor画面に、モジュール2(コード)が表示されます(写真11)。

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

写真12

シートに作成された 「ボタン1」 をクリックしてみましょう。B2セルに返事が返ってくるはずです(写真13)。

図13

写真13

まとめ

いかがでしょうか? Visual Basicは比較的扱い易い言語ではないかと思います。ぜひ「こっそり学ぶC++」の記事もあわせてお読みいただき、トライしてみて欲しいと思います。

なお、この習作のサンプルを下記からダウンロードできます。
参考にしてみてください。

VB_sample.zip

1つ星2つ星
この記事が参考になったらクリック
小林

執筆者: 小林

[主な製品開発実績] シーケンス作成・制御ソフトウェア Wavyシリーズ / 特注製品ソフトウェア (燃料電池評価システム、充放電システム / 耐電圧・絶縁抵抗試験器、特注電源システム、特注EMC試験システム) / 系統連系試験システム

お気軽にご質問・ご相談ください

カタログダウンロード一覧を見る
導入検討中・見積り依頼メールで問い合わせる
close

検索

サイト内の記事と製品を検索

製品のみを検索  サポート記事から検索