テクシオ・テクノロジーによるおじさんのためのIOT講座


(8) Excel VBAによるVISA COM通信プログラミング


共通通信ライブラリ(COM)のVISAに対応したアプリケーションをC#で作成しましたが、開発環境のインストールが
不要なExcel VBAでも同様なアプリケーションが作成できます。COMライブラリを参照で利用することにより、PC
にインストールされているExcelが64ビットでも32ビットでも同じファイルで対応が可能になります。

VISAについてはナショナルインスツルメンツ社のNI-VISAのCOMライブラリを利用しています。最新のNI-VISAにはGP-IBドライバは含まれません、GP-IBを利用する場合はNI-488.2もインストールしてください。他社のVISAを利用する場合も対応するインタフェースが利用できるように環境を整えてください。

NI-VISAおよびNI-488.2はナショナルインスツルメンツ社の製品です、NIソフトウエアライセンスに従い、ご利用の開発PCのOSに対応したVISAを入手してください。VISAは他社の物でも問題ありません。

プログラムは、登録されているリソースの検索、通信ポートのOPEN/CLOSE/初期設定、書き込み、読み取りで構成されています。ファイル処理やグラフ出力などはインターネットに豊富にサンプルがありますので紹介していません、
必要に応じて追加してみてください。


1.ファイルの準備と環境設定
  Excelを実行し、新規ファイルの作成で空のファイルを開きます。次にファイルメニューから名前を付けて保存を
  クリック、ダイアログで
ファイルの種類をExcel マクロ有効ブック(*.xlsm)に変更し、一旦保存します 。 
         
  ファイルの一時保存先がローカルPCのドライブ以外(OneDriveなどのクラウドやWeb)の場合に、ローカルPCにそのファイル
  をコピーすると 'Webなどから入手したファイル’という属性(MOTW)がファイルに付加さます。
  この属性を持つファイルは内容の変更やマクロ・VBA実行が制限され、Excelでは次のように表示されます。
         

 
・属性の確認と変更は以下の手順となります。

  (1) エクスプローラでファイルのプロパティを表示します。
  (2) ファイルのプロパティの最下部赤枠のようにキュリティの項目が
     あるか確認します。
  (3) "許可する"のチェックボックスにチェックを入れOKをクリック
     します。
  (4) 再度プロパティを開くとセキュリティの項目が消えていることを
     確認します。この表示がない場合は解除されています。

 セキュリティの項目は次にファイルコピーなどで属性が付加された時
 に再度表示されます。この場合は同じ手順で解除します。

 本属性は2022年のWindows Update / Office updateで適用が
 始まっています。各PCでいつ適用されるかは不明ですが、PCが
 適用された場合に慌てずに属性の変更をおこなってください。


  Excelを実行しオプションのリボンのユーザー設定で開発メニューを有効にします。またトラストセンターの
  Actrive Xとマクロの設定です”べてを有効にする”を選択します。プログラムの利用終了時は元の設定に戻して
  ください。
       
       

  開発メニューでVisual BasicをクリックしVisual Basic for Applicationsの画面を開きます。挿入メニューから
  ユーザーフォームをクリックしてフォームを追加し、標準モジュールをクリックしてモジュール:Module1を
  追加します。UserForm1を右クリックしオブジェクトの表示でフォームを表示します。
         

  表示メニューからツールボックスを表示し、フォームにオブジェクトを追加します。フォーム(画面)の構成とし
  てはボタン:6個、コンボボックス:2個、テキストボックス:3個、ラベル:3個で、リソース検索、通信の
  OPEN、CLOSE、送信、受信を割当ています。また、ボタンをダブルクリックすると処理のひな形がソース
  コードとして作成されます。

   

2.必要なライブラリと参照、定義を登録します。
  Visual Basic for Applicationsの画面のツールメニューから参照設定をクリックし、ライブラリファイルから
  VISA-COM Type Libralyにチェックを入れ、Okをクリックします。
          

  Module1のソースに時間待ちのAPIの定義(sleep)を追加します。64bit版Excelに対応するためにPtrSafeの定義が
  必要です。
        

  UserForm1のコードにはVISAの参照用の利用定義、コンボボックス用の文字列、通信種別ごとの個別設定用の
  インタフェースを定義し、画面初期化でコンボボックスの定義を行います。
           

3.
イベントの処理を登録します。
   ボタンクリックの処理はフォーム編集のボタンをダブルクリックすることで登録をおこないます。
   インタフェースの選択切替時は必要なプロパティを表示するための表示変更をおこなっています。   
  

   リソースの検索(Find)のボタンは、選択されているインタフェースに基づいて、NI-MAXに登録されている
   デバイスの一覧を取得し、Device Listのコンボボックスに登録します。Socket対応の機器ではNI-MAXに登録
   されていない機器への対応も必要なので、直接Device ListにIPアドレスとポートを記入しての利用も可能と
   しています。
  

   OPEN、CLOSEのボタンは、通信の初期化、オープンまたはクローズをおこないます。RS-232Cでの追加設定
   の例を入れてありますので、利用機器に合わせて設定を追加してください。デバイスリストに表示されている
   リソース名を対象として実行しますので、検索結果だけでなく直接入力した場合も利用できます。
           

   Sendのボタンは送信テキストを送信し、Readのボタンは受信バッファの内容を受信して表示します。
       

   ウインドウ右上の×をクリックした時に通信のクローズを追加します。
       

5.まとめ
  実用アプリケーションには至っていませんが、VISA通信の最低限のプログラミングを取り上げました。

・ExcelでVBAを使うための設定について記述しました。
・GUIのボタン、テキストボックスの扱いを記述しました。
・VISAからインタフェースの検索する方法を記述しました。
・通信の初期化、送受信の例を記述しました。
・最低限のエラー処理を記述しました。
・時間待ちに必要なWin32 API定義を記述しました。

・本プログラムはExcel 2016 32bit xlsm形式で作成されていますが、
 他のバージョンのExcelでも問題ありません。

 後は使う方が必要なものを追加してご利用ください。

  今回は基本的なVISA通信の設定・送受信を行いました、実際に運用するアプリにするには送受信や表示などを
  別スレッド・プロセスに変更するなどの修正は必要になるかと思います、 通信のテストや動作の確認として
  このまま利用も可能です。

目次に戻る



ソースプロジェクトのダウンロード
ダウンロード後にフォルダへ解凍し、xlsmファイルをExcelで開いてください。

©Copyright 2022 TEXIO TECHNOLOGY All Rights Reserved.