【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
お礼
ありがとうございます。 教えて頂いたサイトのいくつかは私も調べていく中で、発見していて、その中から、「7」という数字を見つけました。 そして、上記のとおり、「rtf」ファイルでは、実際に「7」だと、「Unicode」のテキストファイルになっているのです。 いろいろ調べて頂き、ありがとうございました。
補足
ありがとうございます! 教えて頂いたサイトを、今一度じっくり見ていると、そこから、「SaveAs」のパラメータの一覧があり、「Encode」のところで「1200」を指定すると、思っていた「UTF-16LE(BOM付き)」に書き出せました。 具体的には、「行13」を 「z.SaveAs y & "\" & h & ".txt", 7,,,,,,,,,,1200」 とすれば良かったのです。 しかし、マイクロソフトの説明などでは、「SaveAs FileName, 7」でUnicodeによるテキスト保存になっているのに…、分かりにくい! なお、ついでに、「65001」がよく使う「UTF-8」だそうです。 すなわち、「1200」のところを「65001」にすると、「UTF-8」でテキスト保存されます。 ありがとうございました。 問題は解決しました。