質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

1832閲覧

VBSステータスの末尾が不正?

Chandler_Bing

総合スコア673

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2021/01/17 02:00

vbs

1Option Explicit 2 3'---------------------------------------------------------------------- 4' 定数 5'---------------------------------------------------------------------- 6'ログの種類 7Const ENTRY_NO = "entry_no:" 8Const SENDER_MAIL_ADDRESS = "sender_email_address:" 9Const RECEIVED_MAIL_SUBJECT = "received_mail_subject:" 10Const RECEIVED_TIME = "received_time:" 11Const REPLY_MAIL_ADDRESS = "reply_mail_address:" 12Const REPLY_TIME = "reply_time:" 13Const READ_STATUS = "read_status:" 14 15'---------------------------------------------------------------------- 16' 変数数 17'---------------------------------------------------------------------- 18'ファイル読み込み用の変数 19Dim objFileSys 20Dim strReadFilePath 21Dim objReadStream 22Dim strLine 23DIm errorLogSts 24Dim logCnstArr(7) 25Dim logFileArr(7) 26Dim logLinecnt 27Dim cnt 28 29'定数の値を配列に格納 30logCnstArr(0) = ENTRY_NO 31logCnstArr(1) = SENDER_MAIL_ADDRESS 32logCnstArr(2) = RECEIVED_MAIL_SUBJECT 33logCnstArr(3) = RECEIVED_TIME 34logCnstArr(4) = REPLY_MAIL_ADDRESS 35logCnstArr(5) = REPLY_TIME 36logCnstArr(6) = READ_STATUS 37 38'ループ変数の初期値 39logLinecnt = 0 40cnt = 0 41 42'エラーステータスの初期値 43errorLogSts = False 44 45'対象のファイルのパスを指定 46strReadFilePath = "C:\Users\ユーザー\xxxxxx\sample.log" 47 48'ファイルシステムを扱うオブジェクトを作成 49Set objFileSys = CreateObject("Scripting.FileSystemObject") 50 51'ファイルを読み取り専用で開き、TextStream オブジェクトを取得 52Set objReadStream = objFileSys.OpenTextFile(strReadFilePath, 1) 53 54Do Until objReadStream.AtEndOfStream = True 55 '行数のカウント 56 cnt = cnt + 1 57 'ループ変数のリセット 58 If logLinecnt = 7 Then 59 logLinecnt = 0 60 End If 61 62 '1 行読み込み 63 strLine = objReadStream.ReadLine 64 cnt = logLinecnt + 1 65 logFileArr(cnt - 1) = strLine 66 67 'ログの内容を確認 68 If logLinecnt = 7 Then 69 Dim i 70 i = 0 71 For i = 0 To 6 Step 1 72 If InStr(logFileArr(i), logFileArr(i)) = 0 Then 73 Msg Box logFileArr(i) & "のログが存在しません(" & cnt & ")行目" 'ここでエラーが発生します。 74 End if 75 Next 76 End if 77Loop 78 79objReadStream.Close 80 81Set objFileSys = Nothing

上記のコードで、ステートメントの末尾が不正です エラーコード800A0401のエラーが発生します。
以下の質問が関連する内容かと思います。
テラテイル質問

ここでは、配列の要素指定に、ループ変数は使用できないと書いていあるのですが、
以下のコードも、配列の要素指定にループ変数を使用していますが、問題なく実行できました。
私のコードも問題点を教えて頂けますでしょうか。

VBS

1Option Explicit 2 3'サイズ5(最大インデックス4)の配列を宣言 4Dim strNames(4) 5Dim strMessage 6Dim i 7 8'配列の各要素に値を代入 9strNames(0) = "太郎" 10strNames(1) = "次郎" 11strNames(2) = "三郎" 12strNames(3) = "四朗" 13strNames(4) = "五郎" 14 15'LBound → 配列のもっとも小さいインデックスを返します。 16'UBound → 配列のもっとも大きいインデックスを返します。 17For i = LBound(strNames) To UBound(strNames) 18 '配列の要素を1つずつ取り出します。 19 strMessage = strMessage & (i + 1) & "人目の名前は" & strNames(i) & vbCrLf 20Next 21 22'「1人目の名前は太郎 23' 2人目の名前は太郎 24' 3人目の名前は太郎 25' 4人目の名前は太郎 26' 5人目の名前は太郎 27' 」 28' と表示されます。 29' 最後に余計な改行を付けたくない場合は、最大インデックスの場合は改行コードを 30' つけないようにする if 文を入れるなど工夫が必要です。 31MsgBox strMessage

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そのエラーは、VBSの構文に合致しない書き方をしているときに発生するため、原因はさまざまです。

今回は、MsgBoxMsg Boxと空白を入れてかいていることが原因です。

投稿2021/01/17 02:17

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問