- ベストアンサー
ADODB.Streamで開いたファイルに追記する方法
- ADODB.Streamを使用してファイルに追記する方法について説明します。
- regEx.Patternを使用して指定した一行を既存のファイルに追記する方法について説明します。
- C: est_new.txtに指定した一行を追記するにはどうしたら良いか、解説します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Option Explicit Const adSaveCreateOverWrite = 2 'ちゃんとストリームは分けましょう。 Dim objStream1 Dim objStream2 Dim regEx Dim testLine Dim tempLine Set objStream1 = CreateObject("ADODB.Stream") objStream1.CharSet = "UTF-8" objStream1.Open() objStream1.LoadFromFile("test.txt") Set regEx = New RegExp regEx.Pattern = "aa[a-z]" Do Until objStream1.eos tempLine = objStream1.readtext(-2) 'aa[a-z]という正規表現にマッチする行は(行頭、行末がないので)3行あるが、 '変数の内容がそのたびに書き換えられるので最終的なtestLineの中身はaaxc If regEx.Test(tempLine) Then testLine = tempLine End If Loop objStream1.close() Set objStream2 = CreateObject("ADODB.Stream") objStream2.CharSet = "UTF-8" objStream2.Open() objStream2.LoadFromFile("test_new.txt") objStream2.Position = objStream2.size objStream2.WriteText(testLine) objStream2.SaveToFile("test_new.txt") , adSaveCreateOverwrite objStream2.Close() '============================ 'テストに使ったデータ(test.txt)。使っている文字列に特に意味はなく適当に打ち込んだ。 'bbb 'aaa 'abc 'aad 'add 'xyz 'aaxc '====テストに使った実行前のデータ(test_new.txt)。最後に改行が入っている点に注意。 'rrxc '====実行後のデータ(test_new.txt) 'rxrc 'aaxc '補足: 'Cドライブに固定されるのを嫌って、ドライブ名やフォルダ名の指定をなくしている。 '作ったコードおいておいた 'http://cid-b89cb784f5346675.office.live.com/browse.aspx/TestCase/Q6311251?uc=3
お礼
迅速、丁寧な回答ありがとうございました。 思い通りの動きなりました。 また機会がありましたら宜しくお願いします。