マンガでよめる痔のこと・薬のこと

お世話になっております。

VBSでテキスト(文字列)の一部を切り出したいのですが、Visual basicのやり方だとエラーが出てしまいます。
つまり、Mid関数を使ったらエラーが出て、対処がわかりません。
以下に具体的なものを示します。
インターネットホームページの中からテキストを取得して、そのテキストから一部分を切り出したいのです。
例えば切り出したテキストが「赤1、青2、黄3」だとします。色名+数字、色名+数字、色名+数字というテキストです。色名を指定して、その次の数字を切り出したいのです。最終的には切り出した数字をc:\textfile.txtに保存しようとしております。

Dim IE
dim price

Set IE = WScript.CreateObject("InternetExplorer.Application")

IE.Navigate ("http://hoomupeeji")
While IE.busy: Wend
While IE.Document.readyState <> "complete": Wend

Dim fs

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("C:\textfile.txt", True)

For Each r In IE.Document.All.tags("TABLE")(3).rows
For Each c In r.Cells
a.Write (Replace(c.innerText, vbCrLf, ","))
Next
Next

price = Mid(a, InStr(price, "赤") , 1)
a.Write (price)
a.Close
IE.quit

どうぞよろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>price = Mid(a, InStr(price, "赤") , 1)


の「a」は、ファイルであって、文字列ではありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>> price = Mid(a, InStr(price, "赤") , 1)
> の「a」は、ファイルであって、文字列ではありません。

このaファイルの記述をaファイルのテキストと直せばよいのではないかと思いました。もしその方向で正しければ、どのようにすればよいのでしょうか。

お礼日時:2004/09/24 14:25

まず、c.innerText で取り出した文字列が、


期待しているように
"赤1,青2,黄3"のようになっているかどうかを確認しましょう。
str = c.innerTextとかして、
いったん変数に入れます。
str = "赤1,青2,黄3"
の時
price=mid(str,instr(1,str,"青",1)+1,1)
で price は"2"になります。

私は、テーブルの数も内容も知りませんし、
またファイルに書き出す処理の意味も知りませんので、
方向が正しいかどうかは知りません。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q[VBScript][wsh]byte単位でのデータの切り出し

以前LenBに関して質問した者です。

今回は
「ある文字列の○byte目から△byte分取得する」という処理で困っています。

MidB関数を使うと思うのですが、Unicodeの為、
BASP21の.KconvでSJISに変換してあげています。

HOGEasc = objBasp.Kconv(MidB(tmpLine, ○, △),1)

ここで問題となるのが、切り出した文字列が化けてしまうのです。
以下のようにもう一度Unicodeに変換してあげてもダメです。
HOGEuni = objBasp.Kconv(HOGEasc,4)

いろいろ試してみましたが、お手上げ状態です。
このような処理はできないのでしょうか?

どうぞよろしくお願いいたします。

Aベストアンサー

>以前LenBに関して質問した者です。
前回の質問については、Openのままでは、回答した私としては、けじめがつきませんから、マナーとして、閉めてくださいませんか?

>tmpLine:"123456789あいうえお"

>開始位置:2 、指定バイト長:5 > "23456"
>開始位置:10、指定バイト長:4 > "あい"

これは、wsf ではありませんが、このようにすればできるのでは?
つまり、byte で数えて、byte 長に満たしたら、その文字の場所を出すという方法です。後は、wsf に合うように、換えてください。それから、あまり、長い文字列は、かなり遅くなりますね。

'bytecount:
tmpline = "123456789あいうえお"
kaishi = 2
wnum = 5
msg ="開始位置:" & kaishi & " 、指定バイト長:" & wnum
Set objBasp = Wscript.CreateObject("Basp21")
k = 1
For i = 1 To Len(tmpline)
ReDim Preserve bufarray(k)
moji =Mid(tmpline,i,1)
bufarray(k) = LenB(objBasp.Kconv(moji, 1, 5))
k = k + 1
Next

For j = 1 To UBound(bufarray)
cnt1 = cnt1 + bufarray(j)
If cnt1 > kaishi Then
Exit For
End If
Next

For m = j To UBound(bufarray)
cnt2 = cnt2 + bufarray(m)
If cnt2 > wnum Then
Exit For
End If
Next
Msgbox msg
MsgBox Mid(tmpline, j, m - j)

>以前LenBに関して質問した者です。
前回の質問については、Openのままでは、回答した私としては、けじめがつきませんから、マナーとして、閉めてくださいませんか?

>tmpLine:"123456789あいうえお"

>開始位置:2 、指定バイト長:5 > "23456"
>開始位置:10、指定バイト長:4 > "あい"

これは、wsf ではありませんが、このようにすればできるのでは?
つまり、byte で数えて、byte 長に満たしたら、その文字の場所を出すという方法です。後は、wsf に合うように、換えてください。それか...続きを読む

QMidB関数を使いたい!!

MidB・MidB$関数でデータを取り出すと取り出したデータが
「?????????」
という具合になってしまうのですがなぜでしょう。
ちなみにバイナリーモードでオープンしたファイルで、データは漢字やら全角スペースなどが
はいっています。

Aベストアンサー

VBの文字列の格納方法はUnicodeなので正しく取り出せないのでは。
固定バイト長のデータを読み込んでからUnicodeに変換する必要があると思いますが。
StrConv関数を使用してvbUnicodeを指定しUnicodeに変換してみてください。

Qvbsでテキストファイル内の文字列検索

初心者です。

テキストファイルを指定し、含まれる文字列を検索し、
結果表示したいと考えております。

色々探して、以下で作成したのですが、
うまく動いてくれません。

出来ましたら、テキストファイルの中の文字列の
一部分を指定して動作させたいと思っております。

どなたかご教示のほど宜しくお願い致します。


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

Set WSHFso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim strSearchWord

Set tmpFile = WSHFso.OpenTextFile("C:\AAA.txt")

Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
strSearchWord = strSearchWord & tmpLine & vbcrlf
Loop


Dim SearchWord
SearchWord = split(strSearchWord," ")


if InStr(SearchWord(ix), "test")<>0 then
WScript.Echo " testを含みます。"
else
WScript.Echo " testを含みません。"

end if


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

初心者です。

テキストファイルを指定し、含まれる文字列を検索し、
結果表示したいと考えております。

色々探して、以下で作成したのですが、
うまく動いてくれません。

出来ましたら、テキストファイルの中の文字列の
一部分を指定して動作させたいと思っております。

どなたかご教示のほど宜しくお願い致します。


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

Set WSHFso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell...続きを読む

Aベストアンサー

こんにちは。

コードの細かい部分の目的としている部分は良く分からないけれども、少し直してみました。あくまでも、VBSです。元のコードは、ちょっと違うようです。

'-------------------------------------------

Set WSHFso = CreateObject("Scripting.FileSystemObject")
'Set WshShell = CreateObject("WScript.Shell") '??
Dim strSearchWord
dim i
'-------------------------------------------
Public Const FileName ="C:\AAA.txt"
Public Const sWord =""test"
'-------------------------------------------
Set tmpFile = WSHFso.OpenTextFile(FileName)

Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
i = i + 1
nflg= fSearchWord (tmpLine)
If nflg Then Exit Do
Loop
If nflg Then
MsgBox i & "行目に" & sWord &"を含みます。",64
Else
MsgBox sWord &"を含みませんでした。",48
End If
'-------------------------------------------
Function fSearchWord(tmpLine)
Dim flg
SearchWord = Split(tmpLine," ")
For ix = LBound(SearchWord) To UBound(SearchWord)
If Len(Trim(SearchWord(ix))) > 0 Then
If InStr(1, SearchWord(ix), sWord, 1) > 0 Then
flg = True
Exit For
End If
End If
Next
fSearchWord = flg
End Function
'-------------------------------------------

こんにちは。

コードの細かい部分の目的としている部分は良く分からないけれども、少し直してみました。あくまでも、VBSです。元のコードは、ちょっと違うようです。

'-------------------------------------------

Set WSHFso = CreateObject("Scripting.FileSystemObject")
'Set WshShell = CreateObject("WScript.Shell") '??
Dim strSearchWord
dim i
'-------------------------------------------
Public Const FileName ="C:\AAA.txt"
Public Const sWord =""test"
'---------------------...続きを読む

QVBSで変数の宣言はできないのですか?

VBSで、

Dim a As String
a = InputBox("MsgBoxに表示する値を入れてください。", , "test")
MsgBox a

と文章を作って、test.vbsで保存しました。
するとエラーになります。

Dim a As Stringの部分を消すと、問題なく作動します。

もしくは、

Dim a
a = InputBox("MsgBoxに表示する値を入れてください。", , "test")
MsgBox a

でも正常に動きます。
VBSで変数の宣言はできないのでしょうか?

Aベストアンサー

こっちの方がより面白いか。
自動型変換の便利さと危うさですね。

dim a
msgbox typename(a)
a=1
msgbox "a= " & a & " typename= " & typename(a)

a=a*100000
msgbox "a= " & a & " typename= " & typename(a)

a=a*0.1
msgbox "a= " & a & " typename= " & typename(a)

a= a & "b"
msgbox "a= " & a & " typename= " & typename(a)

a=a*1

QVBScriptで、ファイルから任意の行のみ取り出す方法について

VBScriptにて、あるファイル内を1行ずつ順番に取り出しながら、
途中の数行を別のファイルに書き出したいのですが、方法が分からず
悩んでいます。

--------------------------------------------------------------
set objFS = CreateObject("Scripting.FileSystemObject")
set objReadText = objFS.OpenTextFile("C:\read.log")
set objWriteText = objFS.CreateTextFile("C:\write.log")

count = 1
Do Until objReadText.AtEndOfStream

If count >3 And count < 8 Then

strLine = objReadText.ReadLIne
objWriteText.WriteLine(strLine)
ElseIf count = 8 Then
Exit Do
End If

count = count + 1
Loop

objReadText.Close
objWriteText.Close
--------------------------------------------------------------

上記にて、例えばread.logの4行目から7行目だけをwrite.logに書き出したいのですが、
想定した途中の行だけを別ファイルに書き出す事が出来ません。
どなたかアドバイスを頂けないでしょうか。

VBScriptにて、あるファイル内を1行ずつ順番に取り出しながら、
途中の数行を別のファイルに書き出したいのですが、方法が分からず
悩んでいます。

--------------------------------------------------------------
set objFS = CreateObject("Scripting.FileSystemObject")
set objReadText = objFS.OpenTextFile("C:\read.log")
set objWriteText = objFS.CreateTextFile("C:\write.log")

count = 1
Do Until objReadText.AtEndOfStream

If count >3 And count < 8 Then

strLine = objR...続きを読む

Aベストアンサー

set objFS = CreateObject("Scripting.FileSystemObject")
set objReadText = objFS.OpenTextFile("C:\read.log")
set objWriteText = objFS.CreateTextFile("C:\write.log")

count = 0
Do Until objReadText.AtEndOfStream
 strLine = objReadText.ReadLIne
 count = count + 1
 
 If count >3 And count < 8 Then
  objWriteText.WriteLine(strLine)
 End If
 If count = 8 Then
  Exit Do
 End If

Loop

objReadText.Close
objWriteText.Close

QVBS実行時エラー オブジェクトがありません 回避方法について

タイトルの件ですが、現在CSVよりIDとPWを読み込み、Webページに自動ログインできるVBSを作成しております。
ネットの情報を頼りに下記ソースを作成し、自動ログインできるところまでは達成しました。
しかしながら、一回目の実行時はいいのですが、二回目以降時間を置かずにVBSを起動すると
エラーが発生します。(IEは起動し、ログイン自体は出来ます)
本エラーの回避方法をご教授願えませんでしょうか。

エラーの発生場所は objIE.Document.getElementsByName("username")(0).Value = SiteID
あたりだとは思うのですが、何が原因かがわからなく。。

○エラーメッセージ
エラー:オブジェクトがありません。:'objIE.Document.getElementByName(...)(...)'
コード:800A01A8
ソース:Microsoft VBScript 実行時エラー

○コード
'Option Explicit

Dim tmp 'CSV格納
Dim tmp2 'CSV分割
Dim SiteArray(10) 'ID,PW,URL格納
Dim SiteURL 'URL格納
Dim SiteID 'ID格納
Dim SitePW 'PW格納

Dim i
dim objFSO
dim stmCsvFile

'URL,ID,PWをCSVより読込
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set stmCsvFile = objFSO.OpenTextFile("C:\Users\***\Desktop\login.csv")

Do Until stmCsvFile.AtEndOfLine = True
tmp = stmCsvFile.readline
tmp2 = Split(tmp, ",")
SiteArray(i) = tmp2(1)
i = i + 1
Loop

stmcsvfile.Close


'URL,ID,PWを格納
SiteID = SiteArray(1)
SitePW = SiteArray(2)
SiteURL = SiteArray(0)

'---------- ひらく

Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate SiteURL
Do Until objIE.busy = False And objIE.readyState = 4 : Loop '待ち合わせ

'---------- ID/PASSの入力

objIE.Document.getElementsByName("username")(0).Value = SiteID
objIE.Document.getElementsByName("password")(0).Value = SitePW

'---------- SUBMIT

objIE.Document.getElementsByName("login_form")(0).Submit
Do Until objIE.busy = False And objIE.readyState = 4 : Loop '待ち合わせ

'----------

宜しくお願い致します。

タイトルの件ですが、現在CSVよりIDとPWを読み込み、Webページに自動ログインできるVBSを作成しております。
ネットの情報を頼りに下記ソースを作成し、自動ログインできるところまでは達成しました。
しかしながら、一回目の実行時はいいのですが、二回目以降時間を置かずにVBSを起動すると
エラーが発生します。(IEは起動し、ログイン自体は出来ます)
本エラーの回避方法をご教授願えませんでしょうか。

エラーの発生場所は objIE.Document.getElementsByName("username")(0).Value = SiteID
あたりだ...続きを読む

Aベストアンサー

こんにちは。

>コメント頂いた箇所を下記の通り処理を変更しましたが現象はほぼ変わりませんでした。

#1で私の書いた、IsObjectは一般論ですが、個別の問題になるとかなり話は込み入ってしまうから、やめておいたことですが、なんといっても、VBSで、どのように開発しているかは分かりませんが、そのオブジェクトのプロパティとか、確認をして開発したのでしょうか。

>Set upw =objIE.Document.getElementsByName("password")
の時点で、upw を確認できない状態ですと、
upw(0) という「添字(index)」があるかどうかさえ確認できませんよね。
その辺りはどうなんでしょうか?それで、Length プロパティを調べるように書いたわけです。

ふつう、例えば、ここの「教えて!goo」なんかでも、IDとパスワードは、きちんと、[ID(uname, pass)]を持っています。そしてIDには、添字は存在しません。

VBAがあれば、VBEditorのローカルウィンドウで、そのプロパティを確認していただくしかないと思います。もしかしたら、最初からとれていないのかもしれません。

こんにちは。

>コメント頂いた箇所を下記の通り処理を変更しましたが現象はほぼ変わりませんでした。

#1で私の書いた、IsObjectは一般論ですが、個別の問題になるとかなり話は込み入ってしまうから、やめておいたことですが、なんといっても、VBSで、どのように開発しているかは分かりませんが、そのオブジェクトのプロパティとか、確認をして開発したのでしょうか。

>Set upw =objIE.Document.getElementsByName("password")
の時点で、upw を確認できない状態ですと、
upw(0) という「添字(index)」があるか...続きを読む

QReadLineでの読み出し行を指定する

VBAでテキストデータを読み込みたい時





Set MyTxt = FSO.OpenTextFile(Strpath, 1)


Do While MyTxt.AtEndOfStream = False

aaa = MyTxt.ReadLine

Loop


のようにして読み込むことができます。

途中まで読み込んだ後に、最初の行に戻りたい時とか
指定した行まで飛びたい時にはどうしたら良いですか?

Aベストアンサー

>Set MyTxt = Nothing
>Set MyTxt = FSO.OpenTextFile(Strpath, 1)
>とすれば実現できます。
>しかし、この方法は一般的でしょうか?
はい、通常、そのようにします。
但し、Set MyTxt = Nothingの前で
MxTxt.Closeを実行したほうがよいでしょう。

>OpenTextFileをリセットするコマンドって用意されていませんか?
残念ながら、ありません。

以下は、ファイルの全行を読み込み、内部に格納し、
先頭行と最終行の内容を画面に表示しています。(もちろん、他の行も可能)
サイズが約25Mバイトの10万行のファイルを読み込んだ場合でも2~3秒で処理できました。(もちろんマシンによる個体差はありますが)
--------------------------------------------------
Option Explicit

Sub Sample()

Dim FSO As Object
Dim OTS As Object
Dim filename As String
Dim strText As String
Dim inCount As Long
Dim strFileName As String
Dim strArray() As String
Set FSO = CreateObject("Scripting.FileSystemObject")

filename = "c:\goo\data.txt"

Set OTS = FSO.OpenTextFile(filename, 1)
inCount = 0
Do While OTS.AtEndOfStream = False
strText = OTS.ReadLine
ReDim Preserve strArray(inCount)
strArray(inCount) = strText
inCount = inCount + 1
Loop
OTS.Close
Set OTS = Nothing
Set FSO = Nothing

Debug.Print "inCount=" + CStr(inCount)
Debug.Print strArray(0)
Debug.Print strArray(inCount - 1)
End Sub


--------------------------------------------------
今回のような場合は、全行読み込んでから、処理したほうが
簡単かと思うのですが、そのようにしたくない理由がなにかあるのでしょうか?
(例えば、ファイルサイズが非常に大きいとかです)

>Set MyTxt = Nothing
>Set MyTxt = FSO.OpenTextFile(Strpath, 1)
>とすれば実現できます。
>しかし、この方法は一般的でしょうか?
はい、通常、そのようにします。
但し、Set MyTxt = Nothingの前で
MxTxt.Closeを実行したほうがよいでしょう。

>OpenTextFileをリセットするコマンドって用意されていませんか?
残念ながら、ありません。

以下は、ファイルの全行を読み込み、内部に格納し、
先頭行と最終行の内容を画面に表示しています。(もちろん、他の行も可能)
サイズが約25Mバイトの10万行...続きを読む

QVBSでエクセル内の行数を取得する方法

VBS初心者です。よろしくお願い致します。

VBSでエクセル内のデータの行数を取得する方法を教えて下さい。

セル1 セル2 セル3 セル4
123   234   875   ads
あい  うえ  458   444

上記がエクセルの内容だとしたら、3行という結果が欲しいのです。

どうぞよろしくお願い致します。

Aベストアンサー

>自分でエクセル内のデータを1行にして再度実行すると、値はやはり4と返してきます
書式か何か残ってるんじゃないでしょうか

>objExcel.Visible = false
true にして実行してみると判るかと思いますが、
エクセルを非表示するという設定を(明示的に)しています。

QVBSでテキストファイルの文字列の桁数を調べたい

VBSでテキストファイルを1行ずつ読み、ある桁からある項目A(20桁)が始まるとします。
項目Aは漢字が入ります。後ろ空白(1バイト空白)詰めです。
その項目Aの桁数を調べるにはどのようにVBSを組めばよいのでしょうか?

VBSでMid関数とかLen関数を使ってもうまく計算してくれてないような感じなのです。
例えば
桁 →123456789012345678901234567890
data1→aaaaaaaaaこんばんわ
data2→aaaaaaaaaおつかれ

strRec1 = Mid(strRecord,10,20) 
とした場合、stRec1には項目Aが入る予定

data1なら5、data2なら4と返ってきてほしいのです。
ちなみにMidBでもそれぞれ10,8で返ってきてもいいです。

言い換えると、桁n~桁mまでの項目に何桁の漢字があるかを調べたいです。

よろしくお願いします。

Aベストアンサー

SJIS(ASCII)としてカウント(半角1バイト、全角2バイト)で
文字列を取りたいということでしょうか?

上記の例でいくと、「data1→aaaaaaaaaこんばんわ 」の長さは
20というバイト数(桁数ではありません)が帰ってくれば
OKということですよね?(Lenだと15が帰ってくるから)

もし、そうであれば、下記のようなバイト数を取得する
コードを組まなければなりません。
(半角=1バイト、全角=2バイト)

理由:Lenは桁数を読み込んでしまうので、バイトはカウントしません。また、LenBという関数があるんですが、UNICODEでの計算になるので、1文字=2バイトになってしまいます。

■Lenの場合
dim data1
data1 = "aaaaaaaaaこんばんわ"
msgbox CountLen(data1)
function CountLen(byval data)
  dim i
  dim c
  dim counter
  counter = 0
  for i = 1 To Len(data)
    c = asc(mid(data, i, 1))
    if c >= &H00 and c <= &H7E then
      counter = counter + 1
    else
      counter = counter + 2
    end if
  next
  CountLen = counter
end function

■Midの場合

dim data2
data2 = "aaaaaaaaaおつかれ"
msgbox OriginalMid(data2, 9, 3)

function OriginalMid(byval data, byval startIndex, byval length)
  dim i
  dim c
  dim counter
  dim returnValue
  counter = 0
  returnValue = ""
  for i = 1 To Len(data)
    c = asc(mid(data, i, 1))
    if c >= &H00 and c <= &H7E then
      counter = counter + 1
    else
      counter = counter + 2
    end if
    if (counter >= startIndex) and (counter <= startIndex + length - 1) then
      returnValue = returnValue & chr(c)
    end if
    if counter >= startIndex + length then
      OriginalMid = returnValue
      exit function
    end if
  next
end function

SJIS(ASCII)としてカウント(半角1バイト、全角2バイト)で
文字列を取りたいということでしょうか?

上記の例でいくと、「data1→aaaaaaaaaこんばんわ 」の長さは
20というバイト数(桁数ではありません)が帰ってくれば
OKということですよね?(Lenだと15が帰ってくるから)

もし、そうであれば、下記のようなバイト数を取得する
コードを組まなければなりません。
(半角=1バイト、全角=2バイト)

理由:Lenは桁数を読み込んでしまうので、バイトはカウントしません。また、LenBという関数があ...続きを読む

QVBSで特定の文字列が含まれる場合の処理方法

こんにちは。
自分史上初めて投稿します。

テキストファイルを簡単に操作出来るということを聞いて、さいきんVBSを勉強し始めました。
そこで、特定のファイルの中身を読み込んで配列関数を使い配列に格納した後、特定の文字列が含まれる場合には別の文字列へと変換したいと思っているのですが、正規表現が上手くいきません(汗)

どなたか助けていただけませんでしょうか?
それともそもそも正規表現が使えないなんてことはないですよね・・・?


よろしくお願いいたします。
ちなみに書いたコードは↓

Set WSHFso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim strSearchWord

Set tmpFile = WSHFso.OpenTextFile("C:\Documents and Settings\●●●\○○.txt")

Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
strSearchWord = strSearchWord & tmpLine & vbcrlf
Loop


Dim SearchWord
SearchWord = split(strSearchWord,"")


Select Case SearchWord(9)


'ここで『東京』というワードが含まれる場合に別処理を走らせたいのです・・・。
Case "*" & "東京" & "*"

msgbox SearchWord(10)

Case Else

msgbox SearchWord(101)

End Select

こんにちは。
自分史上初めて投稿します。

テキストファイルを簡単に操作出来るということを聞いて、さいきんVBSを勉強し始めました。
そこで、特定のファイルの中身を読み込んで配列関数を使い配列に格納した後、特定の文字列が含まれる場合には別の文字列へと変換したいと思っているのですが、正規表現が上手くいきません(汗)

どなたか助けていただけませんでしょうか?
それともそもそも正規表現が使えないなんてことはないですよね・・・?


よろしくお願いいたします。
ちなみに書いたコード...続きを読む

Aベストアンサー

配列SearchWordの要素の文字列を置換したいのでしたら下のような感じでしょうか。Select Caseステートメントでは正規表現は使えないと思います。

Windows XP SP2 + WSH VBScript 5.6で試しました。

-----
Dim strSearchWord
Dim SearchWord
strSearchWord = "東京 東京駅 西東京 西東京は東京の西 品川"
SearchWord = Split(strSearchWord," ")

Set regEx = New RegExp
regEx.Pattern = "東京"
regEx.Global = True

For ix=0 to UBound(SearchWord)
SearchWord(ix) = regEx.Replace(SearchWord(ix), "神田")
Next

WScript.Echo Join(SearchWord, " ")
-----

なお、特定の単純な文字列が含まれているか調べるには、正規表現を使わなくてもInStr関数でよさそうです。「別処理」でやりたいことの内容にもよりますが。

-----
if InStr(SearchWord(ix), "東京")<>0 then
WScript.Echo SearchWord(ix) & " は東京を含みます。"
else
WScript.Echo SearchWord(ix) & " は東京を含みません。"
end if
-----

配列SearchWordの要素の文字列を置換したいのでしたら下のような感じでしょうか。Select Caseステートメントでは正規表現は使えないと思います。

Windows XP SP2 + WSH VBScript 5.6で試しました。

-----
Dim strSearchWord
Dim SearchWord
strSearchWord = "東京 東京駅 西東京 西東京は東京の西 品川"
SearchWord = Split(strSearchWord," ")

Set regEx = New RegExp
regEx.Pattern = "東京"
regEx.Global = True

For ix=0 to UBound(SearchWord)
SearchWord(ix) = regEx.Replace(SearchW...続きを読む


人気Q&Aランキング