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 です )
REM **********************************************************
REM 正規表現のトリム
REM **********************************************************
Function RegTrim( strValue )

	Dim regEx, str

	Set regEx = New RegExp
	regEx.IgnoreCase = True
	regEx.Pattern = "^[ \s]+"
	str = regEx.Replace( strValue, "" )
	regEx.Pattern = "[ \s]+$"
	RegTrim = regEx.Replace( str, "" )

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


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

読みだした後、ExecuteGlobal で文字列を実行してしまうのが特徴です。Global スコープで実行されるため、最初から定義していたのと同じ事になります。 但し、この処理を行う為に読みだされるソースコード側で注意する事があります 1) コメントにシングルクォートを使わないで REM を使う 2) 条件文で = を使わないで <> の else で表現する これらは、ExecuteGlobal が正しく VBScript の構文を解析する為に重要な準備事項になるので注意して下さい
<job>
<object id="http" progid="Msxml2.ServerXMLHTTP" /> 
<script language="VBScript">

' 関数のソースコードを読みだして、関数として定義
strResult = HTTPGet( "https://toolbox.winofsql.jp/vbs/regtrim.php" )
if not IsEmpty( strResult ) and Left( strResult, 3 ) = "REM" then
	' 関数定義の実行
	ExecuteGlobal strResult
else
	MsgBox( "処理できませんでした" )
	Wscript.Quit
end if

str = RegTrim( getResource( "mydata" ) )
MsgBox( "/" & str & "/" )

Function HTTPGet( strUrl )

	on error resume next
	Call http.Open("GET", strUrl, False )
	if Err.Number <> 0 then
		MsgBox(Err.Description)
		HTTPGet = Empty
		Exit Function
	end if
	on error goto 0

	Call http.Send()

	HTTPGet = http.responseText

End Function
</script>
<resource id="mydata">


    この部分のみ取り出します    


</resource>
</job>