Chapter Twenty Two

第22話



LabVIEWで計算したデータや測定したデータをほかのアプリケーションに渡したい、というのは自然な欲求らしい。
今回は、Info-LVのアーカイブにあるAppleScript.llbを使ってExcelにデータを渡すVIを作ってみたので紹介しよう。Mac OS Userのみの話題となってしまうが、Mac OS8発売記念(?)として大目に見てもらおう。
〜〜〜〜〜〜〜〜MacOS8MacOS8MacOS8〜〜〜〜〜〜〜〜〜〜〜

AppleScript.llbはftp://ftp.pica.army.mil/pub/labview/viのlv4.0フォルダーに登録されている。作者はChristophe Salzmannさんで、概要を和訳すると以下のようになる。
AppleScript.llb.sea.
与えられたAppleScriptを実行します。(PowerMac, LabVIEW 4.0)
詳しい情報が必要な場合はAppleScriptの仕様(documentation)を参照すること。
一回目のVIの実行時にスクリプトをコンパイルし、保存されたコンパイル済みのスクリプトを呼び出します。VIはソーススクリプトが変更されたかをチェックし、変更されている場合再度コンパイルを行います。
(実行前に)コンパイルを指定することもできます。

Mac OS (7.0以降)ではアプリケーション間通信を行う方法の一つとしてApple Eventがある。LabVIEWでもサポートしている機能だが、アプリケーションのメッセージ用語を入手するのが難しく、手軽さに欠ける。Examples>comm>AE Examples.llbにExcelでの使用例があるが、Apple Eventに精通していないとなかなか大変なようだ。ちなみに、AE Examples.llbは私のMacでは正常に動作しなかった。何故なんだろう?とは、深く突き詰めずにすぐあきらめてしまった。

Apple Eventを気軽に扱えるように考えられたのが、AppleScript。大部分のアプリケーションはファイルオープンやクイットなどの基本的な用語しかサポートしていないのが残念なのだが、Excelでは、ビルゲイツが気に入っているからかどうかは知らないが、グラフ作成なども豪華にサポートしている。

実際にExcelに2次元配列のデータを渡すAppleScriptは以下のようになる。用語集があっても2次元配列を渡す方法は簡単にわからなくて、"EXCEL 5.0 Visual Basic とAppleScript"(新居雅行著BNN発行)を参考にした。

tell application "Microsoft Excel"
activate
Select Range "R1C1:R4C2"
set FormulaR1C1 of Selection to {{"1.000000","2.000000"},{"3.000000","4.000000"},
{"5.000000","6.000000"},{"7.000000","8.000000"}}
end tell

これが分かれば、LabVIEWでストリングコマンドを組み合わせるだけだ。赤字の部分を2次元配列に対応するようにダイアグラムを作ろう。

もちろん、Excelのワークシートが開かれていないとDoScript.viはエラーを返してくる。あらかじめ他の方法で開いておいても良いが、それでは面倒だ。
--------------------------------------------------------------------
起動しているアプリケーションリストを調べる。

tell application "Finder"
every process
end tell
--------------------------------------------------------------------
Microsoft Excelを起動する。

tell application "Finder"
open file "Macintosh_HD:Microsoft Office:Microsoft Excel 5:Microsoft Excel"
end tell

Microsoft Excel起動されているか調べて、そうでなければ起動する。これをLabVIEWにやらせるとこんなふうになる。

ファイルを開いて名前を変えて保存する機能を追加すれば、フォーマットしたシートのデータエリアにLabVIEWからデータを送り込んでExcelのグラフ表示を活用することができる。気に入った人は、試してみたらどうだろうか?

See you!


Nigel Yamaguchi

戻る