VBScriptの関数定義をWEB上に置いて、Msxml2.ServerXMLHTTP で読みだして PCで使用する

VBScriptの関数定義をWEB上に置いて、PCで使用する の発展版です。
※ WEB 上に置くソースコードは、上記リンク先を参照して下さい。

Msxml2.ServerXMLHTTP で読み出すコードの作成方法

Msxml2.ServerXMLHTTP は昔はバグがありましたが、今はとても優秀なオブジェクトです。ただ、相手側が静的ファイルの場合は UTF-8 扱いになるはずなので、PHP 側でキャラクタセットを明示しています。( 以下のサンプルの PHP / https://toolbox.winofsql.jp/vbs/regtrim.php は SHIFT_JIS です )
01.REM **********************************************************
02.REM 正規表現のトリム
03.REM **********************************************************
04.Function RegTrim( strValue )
05. 
06.        Dim regEx, str
07. 
08.        Set regEx = New RegExp
09.        regEx.IgnoreCase = True
10.        regEx.Pattern = "^[ \s]+"
11.        str = regEx.Replace( strValue, "" )
12.        regEx.Pattern = "[ \s]+$"
13.        RegTrim = regEx.Replace( str, "" )
14. 
15.End Function

このコードを regtrim.vbs や regtrim.txt としてWEB上のどこかに置く場合は、UTF8N で保存します


ExecuteGlobal による動的な関数の登録

読みだした後、ExecuteGlobal で文字列を実行してしまうのが特徴です。Global スコープで実行されるため、最初から定義していたのと同じ事になります。 但し、この処理を行う為に読みだされるソースコード側で注意する事があります 1) コメントにシングルクォートを使わないで REM を使う 2) 条件文で = を使わないで <> の else で表現する これらは、ExecuteGlobal が正しく VBScript の構文を解析する為に重要な準備事項になるので注意して下さい
01.<job>
02.<object id="http" progid="Msxml2.ServerXMLHTTP" />
03.<script language="VBScript">
04. 
05.' 関数のソースコードを読みだして、関数として定義
06.strResult = HTTPGet( "https://toolbox.winofsql.jp/vbs/regtrim.php" )
07.if not IsEmpty( strResult ) and Left( strResult, 3 ) = "REM" then
08.        ' 関数定義の実行
09.        ExecuteGlobal strResult
10.else
11.        MsgBox( "処理できませんでした" )
12.        Wscript.Quit
13.end if
14. 
15.str = RegTrim( getResource( "mydata" ) )
16.MsgBox( "/" & str & "/" )
17. 
18.Function HTTPGet( strUrl )
19. 
20.        on error resume next
21.        Call http.Open("GET", strUrl, False )
22.        if Err.Number <> 0 then
23.                MsgBox(Err.Description)
24.                HTTPGet = Empty
25.                Exit Function
26.        end if
27.        on error goto 0
28. 
29.        Call http.Send()
30. 
31.        HTTPGet = http.responseText
32. 
33.End Function
34.</script>
35.<resource id="mydata">
36. 
37. 
38.    この部分のみ取り出します    
39. 
40. 
41.</resource>
42.</job>