DDE ダイナミック・データ・エクスチェンジ と MACROマクロ
例:THDテストとデータの判定
例:1/3 Oct.バンドのスペクトラム テストとデータの貼り付け
例:一歩進めたマクロ... メニューボタンとグラフ処理の追加
マクロ サンプルのダウンロードページ (for MS-Excel)
コマンド一覧表
Spectra「RTA/PRO/LAB」及び「PLUS(16bits版)」はWindowsが提供するDDE(Dynamic Data Exchange)に対応しています。DDEは「SpectraSOFT」と他のアプリケーションソフト間のコミニュケーションを可能にする機能です。例えば、アプリケーションから「SpectraSOFT」を制御して自動測定を行い、その結果(データ)の転送を要求し、アプリケーションに貼り付けてデータベース化したり、数表化、グラフ化するという作業に利用することができます。
DDEは次の2つの機能をサポートしています。
「SpectraSOFT」を制御するために"Run"や"Stop"のような命令を送り出すことができます。
「SpectraSOFT」が処理した測定結果(Data)の転送を要求することができます。
「SpectraSOFT」でDDEを活用するには「マクロ(MACRO)」を使用します。マクロは一種のプログラムです。プログラムを作るにはアプリケーションのマクロ生成機能を使用するのが代表的な方法ですが、その手法では応用性に限度があります。例えば、表計算ソフトで自動作表のためのマクロを作成するという範囲であれば生成機能で十分ですが、アプリケーションから「SpectraSOFT」を制御するという応用には対応できません。そこで、一般的には高い柔軟性を持つVBA(Visual Basic for Applications)を使用してプログラムを作成します。VBAにはマイクロソフト社のエクセル(Excel)、ワード(Word)などの代表的なアプリケーションが対応しています。
マクロ、DDEの詳細は別途関連文献に譲り、ここでは例を引用して、マクロ/VBAの実際に触れてみることにします。使用するアプリケーションは「MS−Excel v7.0」と「SpectraPRO」です。PRO以外のモデルを使用する場合は文字列「specpro」の部分を書き換えて下さい。尚、ご使用の「SpectraSOFT」モデルあるいはオプション仕様、またインストール環境によっては機能しないこともあります。ご了承下さい。
内容)
備考)
手順)
Sub LimitTest() 'SpectraSOFTとDDEコネクションを行います |
例−2. 1/3 Oct.バンドのスペクトラム テストとデータの貼り付け
内容)
手順)
Sub ThirdOctaveTest() 'SpectraSOFTとDDEコネクションを行います ch = DDEInitiate("Softest ", "Data") 'エクセルのワークシートをアクティブにします Worksheets("Sheet1").Activate '定義ファイル"octavg_test.cfg"を開きSpectraSOFTを目的のモードに設定します DDEExecute ch, "[File Open c:\specpro\config\octavg_test.cfg]" '次の条件は適時変更可能です MaxAverages = 20 '... 実行回数 AverageTimeMinutes = 1 '... アベレージング時間(分) CurrentAverage = 0 Do 'SpectraSOFTをスタートします DDEExecute ch, "[Run]" 'N分間ウェイトします newHour = Hour(Now()) newMinute = Minute(Now()) + AverageTimeMinutes newSecond = Second(Now()) newTime = TimeSerial(newHour, newMinute, newSecond) Application.Wait newTime ' SpectraSOFTをストップします DDEExecute ch, "[Stop]" 'SpectraSOFTにSpectrumデータの転送を要求します DataArray = DDERequest(ch, "Spectrum") 'Spectrumデータの周波数バンド数を取得します num_bands = UBound(DataArray) 'ワークシート"Sheet1"上にn回分の「周波数」と「アベレージングスペクトラム」値を自動的に貼り付けます Worksheets("Sheet1").Range(Cells(2, MaxAverages - CurrentAverage), Cells(1 + num_bands, MaxAverages - CurrentAverage + 1)).Formula = DataArray '指定回数分テストを繰り返します CurrentAverage = CurrentAverage + 1 If CurrentAverage >= MaxAverages Then Exit Do Loop 'SpectraSOFTをストップします DDEExecute ch, "[Stop]" 'DDEの終了 DDETerminate ch End Sub |
![]() |
例−3. 一歩進めたマクロ... メニューボタンとグラフ処理の追加
操作を容易にするため、ユーザーインターフェース としてコントロールボタンを作り、測定操作環境を整えることができます。
![]() |
![]() |
内容)
![]() |
ここに紹介したソースはあるパートを抜き出したものであり完成されたプログラムではありません。また応用し実用化するには指定フォーム作表マクロ、あるいはグラフィック化マクロなどのソースを加える必要があるでしょう。それらの処理手法は別途各アプリケーションの文献を参照下さい。制御とデータ要求の詳細は コマンド一覧表 を参照下さい。
マクロ サンプルのダウンロードページへ (マクロのプログラム内容は前述と異なります)
MS, Excel, Word, VBAは米国・マイクロソフト社の商標です