1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[VBScript 廃止] VBScript 資産を維持できる OpenVBS という選択肢

1
Last updated at Posted at 2025-11-02

VBScript は、2023 年 10 月に利用非推奨となり、2027 年にデフォルトで無効化がアナウンスされています。
その後の Windows リリースで将来的に削除される予定とも。
(Microsoft Edge の IE モードが 2029 年にサポート終了となる予定。
これに伴い、 ActiveX や VBScript も動作しなくなると考えた方がよさそうという私見)

そのようなロードマップがある上で、これまでに作成された VBScript 資産を他スクリプトに移植せず、そのまま使い続ける
そんな選択肢を取れないか?
と探して辿り着けたのが「 OpenVBS 」です。

OpenVBS は、 VBScript ファイル( .vbs )を Mac や Linux でも動かせる設計ですが、当記事では Windows 環境で使うことを前提とします。

1. OpenVBS is 何?

株式会社ナチュラルスタイルが提供するオープンソースのスクリプトエンジン。
VBScript 互換が主目的なので、かなりの VB コマンドに対応しています。
対応しているコマンドについては、下記ページが参考になります。
OpenVBS - The Script Engine for the BASIC-2020 -
openvbs/readme.txt

2. OpenVBS のビルド手順
(1) GitHub からソースをダウンロードし、任意のフォルダに展開する

(2) (1) の展開フォルダに移動し、 nmake /f makefile.win を実行する
実行結果例:

(3) nmake で以下5つのファイルが生成される
(a) oscript.exe:本記事対象
(b) openvbs.dll:本記事対象
(c) OPENASP.dll:本記事非対象
(d) GUI.dll:本記事非対象
(e) REGEXP.dll:本記事非対象
出力ファイル例:

3. OpenVBS で vbs ファイルを実行
下記のような vbs ファイルで動作を確認します。

sample.vbs
option explicit:
dim [VBS変数]:[VBS変数] = 200
dim [Main戻り値]

Function ByTen(a)
 ByTen = a / 10
End Function
Sub Main
 [Main戻り値] = ByTen([VBS変数])
End Sub

Call Main
WScript.Echo [Main戻り値]

cscript.exe での実行結果:
cscript実行結果

(a) oscript.exe で実行する( cscript.exe 相当 )
実行結果:
oscript実行結果

(b) openvbs.dll で実行する( vbscript.dll 相当 )
(b-1) 管理者権限コマンドプロンプトから vbscript.dll をレジストリに登録する
登録例)regsvr32 c:\openvbs\openvbs.dll
登録に成功すると下記メッセージが表示される

【参考】登録を外すコマンド: regsvr32 /u c:\openvbs\openvbs.dll

(b-2) cscript で OpenVBS エンジンを指定して実行する
openvbs実行結果

4. C# などから実行している VB スクリプト
Microsoft.ClearScript.Windows.VBScriptEngine パッケージを使用し、C# アプリから VB スクリプトを実行している場合、下記リポジトリが代替手段となります。

(1) GitHub からソースをダウンロードし、任意の場所に展開する

(2) (1) で展開したフォルダに移動し、 nmake /f makefile を実行する
実行結果例:

(3) nmake で以下3つのファイルが生成される
(a) openvbs.dll:本記事対象
(b) sample-regfree.exe:本記事対象( regsvr32 で dll 登録が不要 )
(c) sample.exe:本記事非対象( regsvr32 で dll 登録が必要 )
出力ファイル例:

(4) コマンドプロンプトから sample-regfree.exe を実行する
実行結果例:
sample-regfree実行結果

【参考】
sample-regfree.cs ファイルで実行しているスクリプト

sample-regfree.cs
    const string script = 
        "bridge.Log \"Hello from OBScript!\"\r\n" +
        // ①COM 通信で公開した Bridge クラスの Log メソッドを呼出す
        // ②コンソールに出力される
        "Dim total\r\n" +
        "total = bridge.Add(40, 2)\r\n" +
        // ①COM 通信で公開した Bridge クラスの Add メソッドを呼出す
        // ②計算結果が返される
        "bridge.Log \"Add returned: \" & total";
        // ①COM 通信で公開した Bridge クラスの Log メソッドを呼出す
        // ②コンソールに出力される
1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?