
「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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
バッチ処理でファイルの中身を...
-
多数のサブディレクトリ内のフ...
-
psqlでエラーログをとりたい
-
ファイルの最後に文字列挿入
-
バッチファイル 複数ファイル...
-
バッチファイルの修正箇所を教...
-
iPhone版Dropboxからtxtファイ...
-
拡張子を元に戻す
-
NOTEPAD.EXEが見つかりません。
-
WinAPI SHGetFileInfoでICONフ...
-
MATLABで行列を配列に格納する方法
-
ファイルの入出力
-
VBファイルを0KBにする方法
-
【エクセルVBA】エクセルからテ...
-
検索CGIでいいのを知りませんか?
-
フォルダーの中のファイルを数...
-
テキストファイルで提出とは?
-
fortran90 ファイル出力の名前
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
バッチファイル 複数ファイル...
-
psqlでエラーログをとりたい
-
ファイル内容の修正、行削除に...
-
バッチファイルで文字列削除に...
-
テキストファイルで提出とは?
-
拡張子を元に戻す
-
ファイルの最後に文字列挿入
-
UWSCでテキストファイルを開い...
-
エクセルの各セルの内容をそれ...
-
ファイル名の一部をbatで変更し...
-
renameコマンドについて
-
accessでSQL文を使ってcsvファ...
-
3つ以上のテキストファイルをコ...
-
Windowsのバッチファイルを利用...
-
ファイルのワイルドカードについて
おすすめ情報