0

WinActorv7.2.0ユーザです。

指定されたフォルダ内に存在し、検索条件に合致するファイルのパスを一次元配列に取得するスクリプト(*注:「1次元配列操作 (初期化 )」ライブリを使用後に使用するスクリプトになります。)が下記にあるのですが、これを、テキストファイルを開き、全角スペース、2個の半角スペース、TABコード、改行コードをすべて半角スペースに置換後、半角スペースを区切り文字にして、テキストファイルの単語を一次元配列に取得するスクリプトに修正したいと考えています。スクリプトに詳しい方、お知恵をお貸しください。

なお、ご参考までに、テキストファイルのTABを”,”に置換するスクリプトと、テキストファイルの2個の半角スペースを半角スペース1個に置換するスクリプトを掲示します。

-----<テキストファイルのTABを”,”に置換するスクリプト>----

Dim temp 'objFileの中身を取得する変数
Dim filename '入力テキストファイルの絶対ファイルパス

Set objFS = CreateObject("Scripting.FileSystemObject")

Call GetUMSVariable($変数名1$, filename)

Set objFile = objFS.OpenTextFile(filename,1,True)

temp = objFile(0)

'tempにTABあれば、すべて","に置換する。

Do
 If InStr(0,temp,vbtab) > 0 Then
   temp = Replace(temp,vbtab,",")
 Else
   Exit Do
 End If
Loop

Call SetUMSVariable($変数名2$, filename)

objFile.Close

---<ここまで>--

-----<テキストファイルの内容tempの2個の半角スペースを1個の半角スペースに置換するスクリプト>----

Do
 If InStr(1,temp," ") > 0 Then
 temp = Replace(temp," "," ")
 Else
 Exit Do
 End If
Loop

---<ここまで>--

-----<修正いただきたいスクリプト>-----

'インプット変数
arrayName = !配列名!

' ファイルシステムオブジェクトの準備
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(!対象のフォルダ!)

' ファイル名フィルタの準備
Set objRE = CreateObject("VBScript.RegExp")
strFilter = !ファイル名フィルタ!
strFilter = Replace(strFilter, "\", "\\")
strFilter = Replace(strFilter, "+", "\+")
strFilter = Replace(strFilter, ".", "\.")
strFilter = Replace(strFilter, "|", "\|")
strFilter = Replace(strFilter, "{", "\{")
strFilter = Replace(strFilter, "}", "\}")
strFilter = Replace(strFilter, "[", "\[")
strFilter = Replace(strFilter, "]", "\]")
strFilter = Replace(strFilter, "(", "\(")
strFilter = Replace(strFilter, ")", "\)")
strFilter = Replace(strFilter, "$", "\$")
strFilter = Replace(strFilter, "^", "\^")
strFilter = Replace(strFilter, "?", ".")
strFilter = Replace(strFilter, "*", ".*")

objRE.pattern = "^" & strFilter & "$"
objRE.ignoreCase = True

'配列の存在確認
If rootArray.Exists(arrayName) = false Then
'配列数変更
ReDim objArray(CInt(index))
rootArray.Add arrayName,objArray
Erase objArray
i = 0
Else

i= UBound(rootArray.Item(arrayName)) + 1
End If

' フォルダ内のファイルを順々にチェックする
For Each file In objFolder.Files

If file.attributes And 2 Then
' 隠しファイルは処理をしない
Else

' ファイル名がフィルタに一致するかチェックする
If objRE.Test(file.Name) Then

index = i
value = file.Path

'配列取得
getArray = rootArray.Item(arrayName)

'配列の要素確認
If UBound(getArray) < CInt(index) Then
'配列情報を温存し、配列数変更
ReDim Preserve getArray(CInt(index))
End If

'辞書に情報追加
getArray(index) = value

rootArray.Remove arrayName
rootArray.Add arrayName,getArray

Erase getArray

' ファイルのインデックス番号をカウントアップ
i = i + 1
End If
End If
Next

' 配列に入れる値が存在しなかった場合は、配列を削除する
If i = 0 Then
rootArray.Remove arrayName
End If

SetUMSVariable $ファイル数$, i
------<ここまで>----

gorby5775 質問の編集
回答とコメントは、会員登録(無料)で閲覧できるようになります。