CallVBS

 GuiXT 
 Controls 

目的
GuiXTスクリプトまたはInputScriptからVBScript関数を呼び出すことができます。

このコマンドには、コンポーネント “GuiXTコントロールズ” が必要です。

CallVBS msg = test1

VBScript関数test1が呼び出されます。 関数の結果は、文字列形式で変数V[msg]に格納されます。

書式1
CallVBS  funcname “par1” “par2” …

VBScript関数「funcname」が呼び出されます。 指定した文字列“par1” “par2” …が関数に渡されます。 GuiXT変数の値を渡したい場合は、パラメーターとして表記 “&V [varname]”を使用できます。

書式2
CallVBS  varname = funcname “par1” “par2 “par2”

VBScript関数「funcname」が呼び出されます。 指定した文字列“par1” “par2” …が関数に渡されます。 関数の結果は、文字列形式で変数V [varname]に格納されます。

セキュリティ
VBScriptは、Visual Basic、Java、C ++に匹敵する、ファイルの破棄やレジストリ値の変更などの重要な操作を実行できます。 結果として、これらの言語で記述されたプログラムに適用されるのと同じセキュリティルールを、他のユーザーにロールアウトするVBScript関数に適用する必要があります。
詳細
最初のCallVBSコマンドがSAP GUIモードで実行されると、GuiXTプロファイルで指定されたすべてのVBScriptライブラリファイルがロードされます。これらの.vbsファイルの関数とグローバル変数は、ファイルのロード時に単一の名前空間が使用されるため、すべてのファイルにわたって一意の名前を持つ必要があります。ファイルがロードされると、関数またはクラス宣言の外のコマンドが実行されることに注意してください。グローバルVBScript変数は、各SAP GUIモード内で値を保持します。

VBScriptファイルをSAP Webリポジトリに保存し、一元的に管理して、品質管理とロールアウトを促進できます。たとえば、構成ファイル “guixt.ini”内の次のステートメントは、SAP Webリポジトリから3つのVBScriptファイルをロードします。

VBSLibrary   SAPWR:ZGUIXT.vbslib01.vbs

VBSLibrary   SAPWR:ZGUIXT.vbslib02.vbs

VBSLibrary   SAPWR:ZGUIXT.vbslib03.vbs

この場合、関数のロードは構文エラーメッセージで終了するため、VBScriptファイルのいずれかでの構文エラーを回避する必要があります。 VbsEdit(複雑な関数に推奨)などの特別なVBScriptエディターでVBScript関数を記述する場合、そこでスクリプトを実行して構文をチェックできます。

すべてのパラメーターは文字列値としてVBScript関数に渡され、戻り値は指定されたスクリプト変数に文字列値として格納されます。このルールには1つだけ例外があります。オブジェクト参照の処理方法は異なります。次のセクションを参照してください。

VBScript関数内でGuiXT変数を読み書きすることができます。続行方法の詳細については、VBScriptのオブジェクト ”guixt”を参照してください。これにより、参照渡しの一種のパラメーターを実装できます。単に値ではなくGuiXTスクリプト変数の名前を渡し、guixt.get() およびguixt.set() を使用して、その名前を使用して変数にアクセスします。

オブジェクト参照
VBScriptは、動的に作成されたオブジェクトを処理できるオブジェクトベースのプログラミング言語です。このオブジェクトには、CreateObject() やControlコマンドを使用してGuiXTスクリプトに作成されたActiveXコンポーネント、あるいはNewコマンドを使用してVBScriptに作成した自己定義のVBScriptクラス (Class … End Class)のオブジェクトがあります。

GuiXTは、双方向のオブジェクト参照のパラメーター受け渡しをサポートしています。それは、GuiXTスクリプト変数に格納されるときにオブジェクト参照の文字列表現を使用し、オブジェクト参照との間で自動的に変換します(技術的にはIDispatchインターフェイス)。たとえば、VBScriptクラスを定義し、このクラスのオブジェクトをVBScriptで作成し、オブジェクト参照をGuiXTに渡し、それをGuiXTスクリプト変数に格納してから、2番目のVBScript関数を呼び出し、オブジェクト参照を含むGuiXT変数を渡し、オブジェクトの属性とメソッドにアクセスします。

型なしのプログラミング言語であるVBScriptには、プログラムが特定のレベルの複雑さを超えている場合に制限があります。この場合、ActiveXコンポーネントをVisual Basic .NETやC#などのより適切な型付き言語で実装して、このコンポーネントをVBScriptコードで利用することができます。

デバッギング
VBScript関数のstopコマンドでデバッガを呼び出すことができます。 Microsoft Script Debugger(無料)やMS Visual Studioなどの特別なスクリプトデバッガーがPCにインストールされていない場合、Internet Explorerに付属のスクリプトデバッガーが呼び出されます。

注:Internet Explorerの設定でスクリプトのデバッグを無効にしている場合:

   Internet Explorer-> Extras-> Internet Options-> Advanced

stopコマンドは、メッセージやデバッガが表示されることなく、単にスクリプトの処理を停止します。

例2
Excelを起動して、いくつかのデモ値を渡します。

// GuiXT Script

// set some demo values
Set V[region.1] “Americas”
Set V[sales.1] “2584”
Set V[region.2] “Europe”
Set V[sales.2] “1228”

Set V[region.3] “Asia”
Set V[sales.3] “1628”

// call excel
CallVBS start_excel 3

‘ VB Script
Functionstart_excel(rows)

Dim XL
Set XL = guixt.CreateObject(“Excel.Application”)

XL.Visible = True

XL.Workbooks.Add

XL.Columns(1).ColumnWidth = 30
XL.Columns(2).ColumnWidth = 20

For k = 1 to rows
XL.Cells(k,1).Value = guixt.get(“region.” & k)
XL.Cells(k,2).Value = guixt.get(“sales.”  & k)
Next

End Function

前の記事

CallVBSAsync

次の記事

CallVBAsync