あるテキストファイル(*.txt)の内容をテキストボックスに表示するボタンを作りました。さらに、このテキストファイルの内容の中から、決まった文字列のみを表示できるようにしたい(例.abcdefgと書かれたテキストに対してbcdのみ抜き出す)のですが、どうすれば良いのでしょうか。初心者なので、簡単にできる方法があれば教えてください。
<現在のコード>
Dim myFile As String
Private Sub Command1_Click()
CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.Flags = cdlONFileMustExist '既存ファイルのみ読み込み
CommonDialog1.ShowOpen
If CommonDialog1.FileName = "" Then Exit Sub
myFile = CommonDialog1.FileName
FileRead
Form1.Caption = "Form1 " & myFile
End Sub
Private Sub Form_Load()
Form1.Height = 3510
End Sub
Private Sub FileRead()
Dim buf As String
On Error GoTo ErrTrap1
Open myFile For Input As #1
RichTextBox1.Text = ""
While Not EOF(1)
Line Input #1, buf
RichTextBox1.Text = RichTextBox1.Text & buf & Chr(13) & Chr(10)
Wend
Close #1
Exit Sub
ErrTrap1:
MsgBox Err.Description
Err.Clear
End Sub
補足の回答です。
pos = InStr(1,RichTextBox1.Text,"bcd")
If pos > 0 Then
RichTextBox1.Text = Mid$(RichTextBox1.Text,pos,Len("bcd"))
End If
strTextに"bcd"のみ抜き出します。
ある意味、
pos = InStr(1,RichTextBox1.Text,"bcd")
If pos > 0 Then
RichTextBox1.Text = "bcd"
End If
でも同じ結果が返ります。
お礼
"bcd"のみ拾えるようになりました。ありがとうございます。
補足
"bcd"のみ表示できるようになったのはいいのですが、"bcd"文字列が複数回 出ているテキストファイルも1回分しか表示できません(つまり"bcd"があるか ないかはわかるのですが、何回表示されているかがわからない)。下の例の ように出来ないものでしょうか。 例. a"bcd"efg "bcd"xyz "bcd" "bcd" と書かれたテキスト これを"bcd"のみ表示できるように設定したボタンを押す ↓ "bcd"とテキストボックスに表示される ↓ 本当は "bcd" "bcd" bcd" "bcd" と表示したい(上の例では"bcd"が 4回出ているため) また、"bcd"が一度も出てこないテキストに対しては、テキストボックスに 何も表示がでないようにした上に、「"bcd"が見つかりません」と書かれた メッセージボックスを表示したいのですが、現状では元の文がそのまま 表示されてしまいます。If式を使うか、 If pos > 0 Then RichTextBox1.Text = "bcd" の後に、"Else"で処理すればよいかとは思うのですが、これもよくわから ないので、あわせて教えていただけないでしょうか。