dポイントプレゼントキャンペーン実施中!

VBSで、日本語文字列の抽出を行いたいのですが、日本語がうまく動作しません。
もし、対処法などがあれば、教えていただければ、と思います。
プログラムとしては、あるファイルの中から、ある文字列(メールから、名前を抜き出す、など)を抽出して、
別ファイルに書き出すことをしたいのですが、

英数字(半角)では動作するのですが、日本語(全角)では動作ができません。

エンコーディングなどが問題だと思うのですが、プログラムがあまり分からないため、困っています。

良い解決法などあれば、教えていただければ、と思います・・・。



----(現在のファイル:test.vbs)-----------
Const ForReading = 1,ForWriting = 2,ForAppending = 8 '定数の指定
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

sFile = InputBox("検索するファイルのパス")
sWord = InputBox("検索する文字列")

Set oTs1 = Fs.OpenTextFile(sFile,ForReading)
Set oTs2 = Fs.CreateTextFile("result.csv",True)

oTs2.WriteLine "ファイルパス= " & sFile
oTs2.WriteLine "検索文字= " & sWord
oTs2.WriteBlankLines 1

Do Until oTs1.AtEndOfStream
sLine = oTs1.ReadLine


If InStr(sLine,sWord)<>0 Then

dim i'検索文字列
dim j'半角スペースの位置
dim Res'書き出す内容
dim n,m

i= InStr(sLine,sWord)
j = InStr(i, sLine, Chr(32))
n = j-i

Res = Mid(sLine, i, n)

oTs2.Write "Line:" & oTs1.Line - 1 & ", " & Res & vbCrLf
End If

Loop


oTs1.Close
oTs2.Close

MsgBox "書き出し完了"

---------------------------------------------------------------

A 回答 (1件)

動かしてみた結果、文字列の中に半角の空白がある場合は正常に動作します。



逆に無い場合はMIDの部分で変数jの値が0になり、結果nの値がマイナスになる為、エラーになります。

全角の空白にも対応する為、以下の式を考えてみました。

j = InStr(i, sLine, Chr(32))
if j = 0 then
j = InStr(i, sLine, " ")
end if

もし、上記以外のエラーの場合は確認出来なかったので
ご容赦ください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!