![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
あるテキストファイル(*.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
No.2ベストアンサー
- 回答日時:
補足の回答です。
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"文字列が複数回
出ているテキストファイルも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"で処理すればよいかとは思うのですが、これもよくわから
ないので、あわせて教えていただけないでしょうか。
No.1
- 回答日時:
単純に、文字列から特定の文字列を抜き出すと考えてよいのでしょうか?
上の例で言うと、"abcdefg" → "aefg" のようにする。
というこで説明しますと、
InStrを使った方法。
pos = 1
Do
pos = InStr(pos,RichTextBox1.Text,"bcd")
If pos > 0 Then ' 見つからなければ0を返します
If pos = 1 Then
RichTextBox1.Text = Mid$(RichTextBox1.Text,pos + Len("bcd"))
ElseIf pos > Len(RichTextBox1.Text) - Len("bcd") Then
RichTextBox1.Text = Left$(RichTextBox1.Text,pos - 1)
Else
RichTextBox1.Text = Left$(RichTextBox1.Text,pos - 1) & Mid$(RichTextBox1.Text,pos + Len("bcd"))
End If
End If
Loop while pos > 0 And pos < Len(RichTextBox1.Text)
試していないのでなんともいえませんがこれで出来るはずです。
それともう一つ。
Replaceを使った方法。
RichTextBox1.Text = Replace(RichTextBox1.Text,"bcd","")
これでも出来ると思います。
この回答への補足
質問の仕方が悪かったようで、すいません。
例.abcdefgと書かれたテキストに対してbcdのみ抜き出す
"abcdefg" → "bcd" のようにする。
という意味です。
質問の意味と答えが喰い違ってしまいましたが、「InStrを使った方法。」で
"aefg"を抜き出すことが出来ました。ありがとうございます。度々申し訳ない
のですが、回答に対する補足のやり方も教えていただけないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 選択範囲の罫線色の...
-
VBA 別ブックからコピペしたい...
-
ワードVBA どの表か知ることは...
-
マクロの記録を使用したマクロ...
-
Excel 範囲指定スクショについ...
-
エクセルのマクロについて教え...
-
[VB.net] ボタン(Flat)のEnable...
-
A列に記載されているフォルダ...
-
Outlookの「受信日時」「件名」...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
Excel VBA 定義されたプロージ...
-
VBA 別ブックから条件に合うも...
-
Excel VBAで値を変えながら、pd...
-
エクセルのVBAコードについて教...
-
エクセルのマクロについて教え...
-
ExcelVBA修正のお願い
-
VBAでCOPYを繰り返すと、処理が...
-
VBの色を変えるにはどうしたら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ある文字列を検索するボタンの...
-
フーリエ変換をして、周波数成...
-
Caps Lockキーの解除
-
Excel2010の並べ替えで行の高さ...
-
【マクロ】VLOOKUPにて参照元に...
-
リース初心者です 利子率の計...
-
Excelでカーソルが逆に動く
-
エクセルで複数の勤務時間ごと...
-
エクセル関数で {=TABLE(,セル...
-
プルダウンで選択すると隣のセ...
-
エクセルで離れたセルを離れた...
-
60進法で複数セルの足し算、引...
-
エクセルで作った書類に、パン...
-
オーバレイ機能を解除する方法は?
-
VBA 条件が一致した場合の...
-
shiftキーのロック解除をしたい...
-
Excelハイパーリンクのアドレス...
-
エクセルデータをワードへ反映...
-
至急! Excelで歩合計算
-
Excelのオートカルクの結果をコ...
おすすめ情報