選択部分をスクリプトとして評価するマクロ

次の 0.7.5.7 fix6 で TextProcessor が TextEditor になるらしい……。

VBScript の場合

短くすませるなら、次の 1 行。

WScript.Echo "VBScript 評価結果: " & Eval(Ambient.ActiveDocument.TextProcessor.Selection.Text)

ただし、エラーになった場合や、結果がオブジェクトだった場合は、ちょっと見づらい。長くするとこんな感じ。

On Error Resume Next

sScript = Ambient.ActiveDocument.TextProcessor.Selection.Text
vResult = Eval(sScript)

If Err.Number = 0 Then
	WScript.Echo "VBScript 評価結果: " & vResult
Else
	Err.Clear
	
	Set vResult = Eval(sScript)
	If Err.Number = 0 Then
		WScript.Echo "VBScript 評価結果: (" & TypeName(vResult) & ")"
	Else
		WScript.Echo "VBScript 評価エラー: " & Err.Description & "(" & Err.Number & ")"
	End If
End If

JScript の場合

短くすませるなら

WScript.Echo(eval(Ambient.ActiveDocument.TextProcessor.Selection.Text));

だが、マジメにやってもあんま長くならない。さすが ECMAScript、例外処理を入れてもなんともないぜ。

try {
   result = eval(Ambient.ActiveDocument.TextProcessor.Selection.Text);
   WScript.Echo("JScript 評価結果: " + result);
} catch (e) {
   if (e instanceof Error) {
      WScript.Echo("JScript 評価例外: " + e.description + "(" + (e.number & 0xffff) + ")");
   } else {
      WScript.Echo("JScript 評価例外: " + e);
   }
}