前のトピック     次のトピック

第 26 章 MICRO SOFT VISUAL BASIC による VISIO アプリケーションのプログラミング

セクション 4   Visio アプリケーションからプログラムに送られるコマンド文字列の解釈

実行可能プログラム (EXE) を実行すると、プログラムを起動した環境からプログラムにコマンド文字列が送られます。Visio® エンジンが送るコマンド文字列によって、その Visio 環境は、プログラムを起動した環境として識別されます。コマンド文字列には、プログラムに対する引数とは別に、特定のオブジェクトを取得するために使用する値が含まれます。文字列の値は、プログラムを [マクロ] サブメニューから実行したか、数式から実行したか、引数を使用したか、といったプログラムの実行方法によって異なります。

このセクションの内容...

[マクロ] サブメニューからのプログラムの実行

数式の評価によるプログラムの実行

引数を使用したプログラムの実行

[スタートアップ] フォルダからのプログラムの実行

コマンド文字列の解析

[マクロ] サブメニューからのプログラムの実行

ユーザーが [マクロ] サブメニューまたは [マクロ] ダイアログ ボックスからマクロを選択して、プログラムを実行した場合、Visio® エンジンからプログラムに渡されるコマンド文字列は、次のようになります。

"/visio=instanceHandle"

このコマンド文字列で重要な意味を持つ部分は、&quat;/visio&quat; という文字列です。これにより、ほかの不適切な環境からではなく、Visio エンジンからプログラムが実行されたことを確認できます。Windows ハンドル instanceHandle は、プログラムが実行されたVisio インスタンスのハンドルです。

TOP へ

数式の評価によるプログラムの実行

RUNADDON 関数を使用する数式が評価される場合に、Visio エンジンからプログラムに送られるコマンド文字列は、数式に含まれるオブジェクトによって異なります。図形、マスタシェイプ、またはスタイル オブジェクトに属する数式が評価されるときに、プログラムが受け取るコマンド文字列の例を以下に示します。

RUNADDON 関数を使用する図形の数式

図形の数式に RUNADDON 関数を使用して、数式が評価されるときにプログラムを実行することができます。このとき、Visio® エンジンからプログラムに送られるコマンド文字列は、次のようになります。

/visio=instanceHandle /doc=docIndex /page=pagIndex /shape=NameID

このコマンド文字列から、数式が設定されている図形を含むオブジェクトを識別できます。

RUNADDON 関数を使用するマスタシェイプの数式

評価された数式が図面ページの図形ではなく、マスタシェイプに属する場合、コマンド文字列は次のようになります。

/visio=instanceHandle /doc=docIndex /master=masterIndex /shape=NameID

RUNADDON 関数を使用するスタイルの数式

評価された数式が、図形やマスタシェイプではなくスタイルに属する場合、コマンド文字列は次のようになります。

/visio=instanceHandle32 /doc=docIndex /style=NameID

この場合、次のように Style オブジェクトを取得します。

Set styleObj = appVisio.Documents(docIndex).Styles(NameID)

TOP へ

引数を使用したプログラムの実行

セルの数式に RUNADDONWARGS 関数を使用してプログラムを実行する場合、コマンド文字列には指定した引数が次のように含まれます。

/visio=instanceHandle /doc=docIndex /page=pagIndex /shape=Sheet.ID arguments

カスタム メニュー コマンドまたはカスタム ツールバー ボタンの AddOnArgs プロパティに引数が含まれている場合、コマンド文字列は次のようになります。

/visio=instanceHandle arguments

arguments 文字列には、プログラムで使用可能な任意の引数を使用できます。コマンド文字列全体の長さは、フラグ (/visio=、/doc=、/page=、および /shape など) を含めて 127 バイトまでに制限されているため、合計で 50 バイトを超える引数は使用しないようにします。

コマンド文字列全体の長さが 127 バイトを超えるとエラーが発生し、Visio アプリケーションはプログラムを実行しません。

TOP へ

[スタートアップ] フォルダからのプログラムの実行

Visio の [スタートアップ] フォルダからプログラムを実行する場合は、コマンド文字列にもフラグ /launch が含まれます。

/visio=instanceHandle /launch

TOP へ

コマンド文字列の解析

解析とは、ステートメントを構文単位に分割する処理です。つまり、文字列を分析して、より処理しやすいコンポーネントのグループに分解します。

コマンド文字列を取得して解析するには、使用する開発環境で用意されている解析のための関数を使用してください。たとえば、Microsoft Visual Basic では、Command 関数を使用してコマンド文字列を取得し、解析には、MidStrComp などの文字列関数を使用します。

Top