• 締切済み

VBSで、日本語文字列の抽出が、うまくいきません。

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 "書き出し完了" ---------------------------------------------------------------

みんなの回答

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

動かしてみた結果、文字列の中に半角の空白がある場合は正常に動作します。 逆に無い場合はMIDの部分で変数jの値が0になり、結果nの値がマイナスになる為、エラーになります。 全角の空白にも対応する為、以下の式を考えてみました。 j = InStr(i, sLine, Chr(32)) if j = 0 then j = InStr(i, sLine, " ") end if もし、上記以外のエラーの場合は確認出来なかったので ご容赦ください。