【VBScript】プログラム改良
VBScriptのプログラムについて、
回答頂きたく投稿しました。
以下を実行すると、
65行目で「'End'がありません。」とエラー表示されてしまいます。
End Ifは入れているはずですが、どこが問題なのでしょうか?
またIfステートメントを少し減らしたいのですが、
どうすればシンプルな形になりますでしょうか?
恐れ入りますが、アドバイス頂ければ幸いです。
Option Explicit
Dim intCount, strFile, strArg, strX, lonMsgBox, objFSO, objOpen, strText, strNewFile, objTS
intCount = 0
If WScript.Arguments.Count = 0 Then
WScript.Echo "引数が指定されていません。"
WScript.Quit
End If
For Each strArg In WScript.Arguments
intCount = intCount + 1
strFile = strArg
Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.GetExtensionName(strFile) <> "txt" Then
If intCount > 1 Then
MsgBox "2つ以上のファイルが指定されています。" & vbCr _
& "ファイルを指定し直してください。", 48, "Error"
WScript.Quit
Else
MsgBox "テキストファイル以外が指定されています。" & vbCr _
& "ファイルを指定し直してください。", 48, "Error"
WScript.Quit
End If
Else
strX = InputBox("抽出したい文字列を入力してください。", "変換処理")
If strX <> "" Then
lonmsgbox = MsgBox (strX & "を抽出します。" & vbCr _
& "変換しますか?", 4 + 32 + 0, "確認")
If lonmsgbox = 6 Then
strNewFile = objFSO.BuildPath( _
objFSO.GetParentFolderName(strFile), _
objFSO.GetBaseName(strFile) & "_New." & objFSO.GetExtensionName(strFile))
Set objTS = objFSO.OpenTextFile(strNewFile, 2, True)
Set objOpen = objFSO.OpenTextFile(strFile, 1)
Do Until objOpen.AtEndOfStream = True
strText = objOpen.ReadLine
If InStr(strText, strX) > 0 Then
objTS.WriteLine strText
End If
Loop
objTS.Close
Set objTS = Nothing
objOpen.Close
Set objFSO = Nothing
WScript.Sleep 1000
MsgBox ("文字列の抽出が完了しました。")
Else
MsgBox ("処理を中断します。")
End If
End If
ElseIf IsEmpty(strX) then
MsgBox ("キャンセルされました。")
WScript.Quit
Else
MsgBox "文字列が入力されていません。" & vbCr _
& "入力し直してください。", 0, "Error"
WScript.Quit
End If
お礼
ありがとうございました。