VBScript「終了していない文字列型の定数です」を解消する

VBScript でプログラムを組んだとき、プログラムには何の問題もないのにコンパイルエラー「終了していない文字列型の定数です」となることがある。
そんなときは、ファイルの文字エンコーディングを確認してみるといい。
文字エンコーディングが「シフトJIS」以外 (たとえば UTF-8) だと、このエラーが発生することがある。

以下のサンプルソースを使って検証する。
サンプルソース (SayHello.vbs)

Option Explicit

MsgBox "ハローワールド"

文字エンコーディングが「シフトJIS」の場合

処理が成功し、メッセージボックスが表示される。
これが正しい動き。
文字エンコーディングがシフトJISならスクリプトは正常終了する。

画像1

文字エンコーディングが「UTF-8」の場合

コンパイルエラーになる。
「終了していない文字列型の定数です。」とのこと。
文字エンコーディングがUTF-8だとコンパイルエラーになる。

画像2

文字エンコーディングが「UTF-8 (BOM付き)」の場合

コンパイルエラーになる。
「文字が正しくありません。」とのこと。
行と文字が 1 なので、おそらく BOM そのものが原因なのだろう。
文字エンコーディングがUTF-8 (BOM付き) だとコンパイルエラーになる。

画像3

例外:コンパイルエラーにならないこともある

たとえば、以下のプログラムだと UTF-8 にしていてもコンパイルエラーにならない。

Option Explicit

MsgBox "ハロー"

ただし実行された結果は文字化けしている。

画像4

まとめ

コンパイルエラー「終了していない文字列型の定数です」が発生したら、プログラムの文字エンコーディングが「シフトJIS」であることを確認しよう。

この記事が気に入ったらサポートをしてみませんか?