- 締切済み
Excel VBAテキストのコピー
(例)のようなテキストファイルをコピー元とし、 TITLE_NAME行のTITLE_NAMEの後ろ8文字がInputBoxで入力された値と同じだった場合、TITLE_NAMEの本文をTITLE_NAMEが変わるまでコピーしたいのですがどのようなコードを書けばいいでしょうか? (この場合だとTITLE_MANEの後ろがBBBBBBBに当たる箇所の本文をコピーしたいです。) TITLE_NAMEの後ろは最大8文字ですが、必ずしも8文字というわけではありません。 どなたか教えていただけないでしょうか? テキストファイルの内容はこんな形です。 (例) TITLE_NAME AAAAA (本文数行) TITLE_NAME AAAAA (本文数行) TITLE_NAME BBBBBBB (本文数行) TITLE_NAME BBBBBBB (本文数行) TITLE_NAME CCCCCC (本文数行) TITLE_NAME CCCCCC (本文数行) [EOF]
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nag0720
- ベストアンサー率58% (1093/1860)
回答がついてますので、それでOKの場合は無視してください。 >TITLE_NAMEの本文をTITLE_NAMEが変わるまでコピーしたい 同じTITLE_NAMEの行が2行ありますが、こういう場合どんなファイルを作りたいのですか。 ・始めに見つかったTITLE_NAMEの本文だけをファイルにする ・見つかったTITLE_NAMEの本文を全てつなげて1つのファイルにする ・それぞれ別々のファイルにする(その場合のファイル名は?) あと、TITLE_NAMEの行自身はコピーしなくてもいいんですよね。 以上、補足お願いします。
- aji70
- ベストアンサー率100% (1/1)
VBAなんて久しぶりなんで、間違っていたらごめんなさい (エラー・例外等は無視して作っています) Const sSearch = "TITLE_NAME " Private Sub CommandButton1_Click() Dim sIN As Integer '/* エラー処理は無視 sIN = Val(InputBox("数字を入力してください")) If sIN > 0 Then Dim bCopy As Boolean: bCopy = False '/* ファイルのOPEN Open "c:\aaa.txt" For Input Access Read As #1 Open "c:\aaa2.txt" For Output As #2 '/* EOFまで繰り替えす Do While Not EOF(1) Dim Str As String '/* 一行読込 Line Input #1, Str MyPos = InStr(1, Str, sSearch, 1) ' /* タイトル行? If MyPos > 0 Then bCopy = False Dim chk As String chk = Replace(Str, sSearch, "") If Len(chk) = sIN Then bCopy = True Print #2, Str End If Else If bCopy = True Then Print #2, Str End If End If Loop Close #1 Close #2 End If End Sub
- nag0720
- ベストアンサー率58% (1093/1860)
前回も同じような質問をしていますが、そのときの回答を参考にして御自分で作成してみてから分からないところだけを質問しましょう。 ファイルの入出力やキーコントロールの仕方はほとんど同じです。 http://oshiete1.goo.ne.jp/qa5044985.html 丸々作ってもらってコピーするだけじゃ身につきませんよ。
補足
前回は質問の内容がわかりずらかったので、わかりやすく纏めて新たに質問した形となります。 前回ご回答いただいた内容と、今回やろうとしていることにはズレがあったので、新たに質問させていただきました。