「ADODB.Streamで開いたファイルに追記する」を参考に以下を作成しました。
c:\test.txtファイルを検索し、regEx.Patternで指定した一行を既存のC:\test_new.txtに追記したいと考えています。ちなみにファイルはUTF-8なのでADODB.Streamを使用しています。
C:\test_new.txtの最後の行にregEx.Pattern = "aaa"で指定した行が追記されることは確認していますが、C:\test_new.txtにc:\test.txtがコピーされて最後の行にregEx.Patternが追記されます。
試行錯誤しましたが初心者なため上手く動作しません。
既存のC:\test_new.txtに指定した一行を追記するにはどうしたら良いでしょうか。
お手数ですが、何方かご回答よろしくお願いします。
Option Explicit
Dim objStream,regEx,testLine,tempLine
Const adSaveCreateOverWrite = 2
Set objStream = CreateObject("ADODB.Stream")
objStream.CharSet = "UTF-8"
objStream.Open()
objStream.LoadFromFile("c:\test.txt")
Set regEx = New RegExp
regEx.Pattern = "aaa"
Do Until objStream.eos
tempLine = objStream.readtext(-2)
If regEx.Test(tempLine) Then
testLine = tempLine
End If
Loop
objStream.Position = objStream.size
objStream.WriteText(testLine)
objStream.SaveToFile("C:\test_new.txt"),adSaveCreateOverwrite
objStream.Close()
Msgbox ("End")
No.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/brow …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
ADODB.Streamで開いたファイルに追記する
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.txtではなく.logの方が良いの...
-
連番の数字を含む文字列の作成
-
txtとはWordでなんですか?
-
コマンドプロンプトで指定した...
-
フォルダ名をファイル名の頭に...
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
バッチファイルで文字列削除に...
-
ファイルを処理中に次の処理に...
-
javaで大量のファイルを読み込...
-
リモートのファイル存在確認
-
ファイルの最後に文字列挿入
-
WindowsXP 記号チェック
-
PHPで複数のテキストファイルを...
-
コマンドプロンプトでスペース...
-
FTPコマンドでgetしたい
-
PythonでZIP中のZIPを操作する方法
-
フルパスの中にワイルドカード...
-
forfilesで検索したファイルを...
-
UWSCでファイルを開く方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.txtではなく.logの方が良いの...
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
拡張子を元に戻す
-
COPYコマンドで結合すると余計...
-
テキストファイルで提出とは?
-
ファイルの最後に文字列挿入
-
renameコマンドについて
-
バッチファイル 複数ファイル...
-
forfilesで検索したファイルを...
-
Windowsのバッチファイルを利用...
-
テキスト(txt)→ワード(docx)へ...
-
txtとはWordでなんですか?
-
psqlでエラーログをとりたい
-
UWSCでテキストファイルを開い...
-
バッチファイルで文字列削除に...
-
ファイル内容の修正、行削除に...
-
accessでSQL文を使ってcsvファ...
-
UWSCでファイルを開く方法
おすすめ情報