ZEMAXとExcel間のコミュニケーションZEMAXとエクセルを両方開いてください。エクセル内で Tools > Macro > Visual Basic Editor をクリックしてください。(Excel 2007を使用している場合にVisual Basic Editor を開くにはこちらを参照ください。
http://office.microsoft.com/ja-jp/excel/HP100141131041.aspx?pid=CH101001571041#RunMacroShortcut )
添付ファイル:
VBA_01.gif [ 39.59 KiB | 表示回数: 789 回 ]
そして、VBAエディタウィンドウ内で、Insert > Module をクリックしてください。
添付ファイル:
VBA_02.gif [ 17.76 KiB | 表示回数: 788 回 ]
その後、下記のテキストをクリップボードにコピーし、エディタに貼り付けてください。
Function zemax(access As String) As String
Dim ch As Long
Dim s As Variant
Set WordObject = CreateObject("Word.Application")
ch = WordObject.DDEInitiate("Zemax", "anystring")
s = WordObject.DDERequest(ch, access)
WordObject.DDETerminate (ch)
WordObject.Quit
zemax = Left(s, Len(s) - 1)
End Function
エディタは以下のようになります。
添付ファイル:
VBA_03.gif [ 13.99 KiB | 表示回数: 787 回 ]
Visual Basic Editorを閉じてください。エクセルを開き、B3のセルに「GetSerial」を入力し、(かぎ括弧は入力不要ですが、大文字と小文字の区別には気を付けてください。)他のセルに「=ZEMAX(B3)」と入力してください。(かぎ括弧は不要です。)お使いのキーのシリアル番号(下図の番号とは異なります。)が返されます。
添付ファイル:
VBA_04.gif [ 13.45 KiB | 表示回数: 787 回 ]
この作業を行うにはZEMAXが起動している必要があります。このシンプルな関数によって任意のZEMAXエクステンションのデータアイテムをテキスト文字列としてエクセルのセルに入力し、処理のために文字列をZEMAXへ送れるようになります。これは提供されたサンプルエクステンションの「Command Line Interface」に似ています。Command Line InterfaceはVB6プログラムで、エクステンション データアイテムのクエリーアンドレスポンスのプロセスを提供するために設計されたものです。
更なる例として、{zemaxroot}\Samples\Sequential\Objectives\Cooke 40 degree field.zmx のサンプルファイルを開いてください。そして、エクセルでB3のセルを「OpenWindow. Ima」に変えてください。(ここでもかぎ括弧は不要ですが、シンタックスの大文字と小文字は区別します。)そうすると、エクセルは次のようになります。
添付ファイル:
VBA_05.gif [ 11.66 KiB | 表示回数: 788 回 ]
そして、ZEMAX内で新しいウィンドウ、イメージ解析(Image Analysis)ウィンドウが開きます。
添付ファイル:
VBA_06.gif [ 10.86 KiB | 表示回数: 786 回 ]
注意:仮にこれがうまくいかず、エクセルにOKではなくFAILが表示される場合は、ZEMAXで File > Preferencesをクリックし、Editorsタブで「Allow Extensions to Push Lenses」にチェックを入れてください。
添付ファイル:
Hello0.gif [ 13.57 KiB | 表示回数: 787 回 ]
そして、再度OpenWindow, Imaコマンドを送ってください。
エクセル(もしくはその他外部プログラム)で現在開いているZEMAXセッションのエディタと解析ウィンドウにおけるデータの変更をされたい場合は、「Allow Extensions To Push Lenses」にチェックを入れる必要があります。この制御は、通常の外部プログラムによってZEMAXユーザーインターフェイスのデータが誤って削除されるのを防ぐために備えられています。