2017-09-14 11 views
-3

私はOutlookデスクトップアプリケーションを自動化しようとしています。私は、Outlookでさまざまな種類の操作を実行するVBスクリプトファイル(file.vbs)で書かれた異なるサブプロシージャを持っています。コマンドラインからサブプロシージャの1つを呼びたいと思います。それ、どうやったら出来るの?コマンドラインからVBSの関数/サブプロシージャを呼び出す方法は?

答えて

-1

この例では、functionまたはsubを呼び出し、適切な呼び出しを動的に検出します。コマンドラインでは、呼び出す関数の名前として 'functionToExecute'を、呼び出したいサブルーチンとして 'subToExecute'を指定します。それぞれのサブ機能のためのコマンドラインからVBSを呼び出すための二つの例:VBSスクリプトで

cscript.exe demo.vbs subToExecute 
cscript.exe demo.vbs functionToExecute 

は、コマンドライン引数からルーチンの名前を取得し、サブルーチンを呼び出すかコールするかどうかを決定機能:VBSコマンドライン処理のための

On Error Resume Next 
mySubOrFuncName = WScript.Arguments.Item(0) 'name of the subroutine or function 
subCall = "call " & mySubOrFuncName & "()" 
Execute subCall 

If Err.Number <> 0 Then 'if sub could not be called, take the function call 
    eval(mySubOrFuncName) 
    Err.Clear 
End If 

WScript.Quit 

'this is a subroutine you already have 
Sub subToExecute 
    MsgBox "inside a sub" 
    'do stuff 
End Sub 

'this is a function you already have 
Function functionToExecute 
    MsgBox "inside a function" 
    'do stuff 
End Function 

ハンディ例:https://ss64.com/vb/syntax-args.html

+0

これは私を助けました。しかし、あなたが言及したように、eval()は私のためには機能しませんでした。 – user8533698

+2

@ user8533698 'Eval()'は完全な文を実行できない条件を評価するので、代わりに 'Execute()'/'ExecuteGlobal()'を使うべきです。また、上の例では、 'a'に不正な文字列が割り当てられているため、構文エラーが発生します。誰にも役立たない不完全な/間違った答えを受け入れないでください。 – Lankymart

+1

は 'a 'への代入文法エラーを修正したばかりです –

関連する問題