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
戻る