なぜ VBS を VBA に変換するのですか?
どちらの言語も Visual Basic から派生しており、似た構文を共有していますが、VBScript は Office には存在しない WScript.Shell や FileSystemObject などのオブジェクトを参照し、VBA は Windows Script Host には存在しない Workbooks、Sheets、ActiveDocument などを参照します。一方のために書かれたコードは、手動で変更を加えない限り、もう一方では動作しません。
VBS から VBA への変換方法
Microsoft Visual Basic APP
テキストエディタで .vbs を開き、対象の Office アプリで VBA エディタ (Alt+F11) を開き、関連するプロシージャを VBA モジュールにコピーして、VBScript 固有のオブジェクト参照を VBA の同等のものに置き換えます。
VBS を変換するプログラム
これらの形式について
品質と注意点
- WScript.Shell や WMI クエリなどの VBScript 固有のオブジェクトには、直接的な VBA の同等物はありません。ファイル操作は、VBA 組み込みのファイル関数または実行時バインディングの COM 呼び出しに置き換えることができます。
- VBA は
CreateObject("Scripting.FileSystemObject")を呼び出すこともできるため、VBScript からの COM ベースのファイル操作の一部は、最小限の変更で移植可能です。 - VBScript は Windows から削除される予定です。Microsoft は、Windows オートメーションの移行先として VBA ではなく PowerShell を推奨しています。
よくある質問
VBA と VBScript は同じものですか?
いいえ - 構文のルーツは共有していますが、異なるオブジェクトモデルを持つ異なるホストで動作します。一方のために書かれたコードは、手動で変更しない限り、もう一方では動作しません。
VBA から `.vbs` ファイルを呼び出すことはできますか?
はい、間接的に可能です - VBA は Shell または COM 呼び出しを使用して Windows Script Host を起動し、
.vbs を実行できますが、それは変換ではありません。VBScript の代わりに何に移行すべきですか?
Microsoft は、VBScript オートメーションの代替として PowerShell を推奨しています。PowerShell は VBScript が行っていたすべてをカバーしており、積極的にメンテナンスされています。