VBScript「終了していない文字列型の定数です」を解消する
VBScript でプログラムを組んだとき、プログラムには何の問題もないのにコンパイルエラー「終了していない文字列型の定数です」となることがある。
そんなときは、ファイルの文字エンコーディングを確認してみるといい。
文字エンコーディングが「シフトJIS」以外 (たとえば UTF-8) だと、このエラーが発生することがある。
以下のサンプルソースを使って検証する。
サンプルソース (SayHello.vbs)
Option Explicit
MsgBox "ハローワールド"
文字エンコーディングが「シフトJIS」の場合
処理が成功し、メッセージボックスが表示される。
これが正しい動き。
文字エンコーディングがシフトJISならスクリプトは正常終了する。
文字エンコーディングが「UTF-8」の場合
コンパイルエラーになる。
「終了していない文字列型の定数です。」とのこと。
文字エンコーディングがUTF-8だとコンパイルエラーになる。
文字エンコーディングが「UTF-8 (BOM付き)」の場合
コンパイルエラーになる。
「文字が正しくありません。」とのこと。
行と文字が 1 なので、おそらく BOM そのものが原因なのだろう。
文字エンコーディングがUTF-8 (BOM付き) だとコンパイルエラーになる。
例外:コンパイルエラーにならないこともある
たとえば、以下のプログラムだと UTF-8 にしていてもコンパイルエラーにならない。
Option Explicit
MsgBox "ハロー"
ただし実行された結果は文字化けしている。
まとめ
コンパイルエラー「終了していない文字列型の定数です」が発生したら、プログラムの文字エンコーディングが「シフトJIS」であることを確認しよう。
この記事が気に入ったらサポートをしてみませんか?