C#からVBSを実行する方法

C#

C#にて作成した関数の中で、File名を指定してVBSを叩く処理をやってみた。

スポンサーリンク

C#から呼び出す用に用意したテキスト

 

VBS:Code

Function CheckOddNum(Num)
    ' 2で割る
    nResult = Num Mod 2 
    ' 余りが無い場合
    If nResult = 0 Then  
       CheckOddNum = "偶数"
    Else
       CheckOddNum = "奇数"
    End If
End Function

適当に作りすぎてOption Explicitすらしてませんが許してください。。。
ただ数値Numを貰い、それが偶数なのか機数なのかの文字列を返すだけの処理です。

C#側の処理


Microsoft Script Control 1.0の参照が必須です。

C#:Code

        /////////////////////////////////////////////////////////
        //  概要:VBS呼出処理                                    
        //  はまみ:2019/06/06                                  
        /////////////////////////////////////////////////////////
        private void CallVBS(string strFilePass)
        {
            // ファイルパスを指定して読み込み&変数strCodeへ格納
            StreamReader sr = new StreamReader(strFilePass, Encoding.GetEncoding("Shift_JIS"));
            string strCode = sr.ReadToEnd();
            sr.Close();

            MSScriptControl.IScriptControl scriptCtrl = new MSScriptControl.ScriptControl();
            scriptCtrl.Language = "VBScript";

            // 読み込んだコードを指定
            scriptCtrl.AddCode(strCode);

            // 関数への引数を指定
            List<object> ListParam = new List<object>();
            ListParam.Add(6);

            // 名前を指定してVBScriptの関数を実行
            string result = scriptCtrl.Run("CheckOddNum", ListParam.ToArray());

            // 実行結果を画面に出力
            MessageBox.Show(result);
        }

スクリプトファイルのアドレスを貰い、関数名を指定し引数を渡してます。

この内容だとパラメータで数値6を渡してますので、result には文字列”奇数”が返ります。

まとめ


関数名を指定してパラメータを渡すだけなのでとっても簡単なので、ちょっとした処理を現場でもすぐにカスタマイズ出来るようになるかと思います。

RPAの浸透等で現場レベルも向上している今、スクリプトの書き方などちょびっと研修してあげれば、結果的に皆HAPPY

コメント