VB2010を使っています。初心者です
テキストファイルに複数のフルパスデータ「test.txt」があります。
test.txtから2バイト文字を検索し該当するデータを削除したいです。
例:C:\あああ フォルダを含むデータを全てテキストファイルから削除したいです。
本で探したりネット検索しましたが私の探し方が
悪いせいか目的のコードを探せませんでした。
下記のPGは何件ヒットしたかのPGです。
このPGを改良してデータの削除はできませんか?(fffの変数に入っているデータを削除したい)
それとも、他の方法があるのでしょうか?
よろしくお願いします。
--------------------------------------------------------------------------------------------
Private Sub Button8_Click(sender As System.Object, e As System.EventArgs) Handles Button8.Click
'読み込む文字コードの指定(ここでは、Shift JIS)
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis")
'検索の結果を格納
Dim result As New ArrayList
'今回検索する文字列を格納
Dim seach_str As String = TextBox1.Text
For Each txtFileName As String In IO.Directory.GetFiles("D:\test")
'C:\testフォルダ以下にある複数のファイルの列挙
If IO.Path.GetExtension(txtFileName).ToLower = ".txt" Then
'textファイルのみ抽出する。
'すべての行を読み込む
For Each fff As String In System.IO.File.ReadAllLines(txtFileName, enc)
'"aaa"の文字を検索
If fff.IndexOf(seach_str) >= 0 Then
'その後にある"xxx"を取得する。
'※最後の-1は、"aaa"直後の文字を含めない場合は削除する
'fff = fff.Substring(fff.Length - fff.IndexOf(seach_str) - seach_str.Length - 1)
'結果に格納
result.Add(fff)
End If
Next
End If
Next
MessageBox.Show(result.Count.ToString & "個ヒットしました。")
End Sub
No.2ベストアンサー
- 回答日時:
ファイルは、一本の長い原稿用紙と考えてください。
できることは
・1マス書き直す
・後に追加する
・途中または最初から後を全部消す
くらいです。「途中を削除して詰める」ことは(テキストエディタで1行削除するような感覚では)できません。
やるなら
・削除した分を詰めるように1文字ずつ書き直していって、余った最後部を切り捨てる
・一旦別の場所(ファイルやメモリ)に読み込んで削除処理したあと、全部上書きする
等工夫が必要です。
ReadLines等は、ファイルの内容をメモリにコピーするためのものです。
メモリにコピーされたものを編集しても、元のファイルにはまったく影響はありません。
このプログラムだと、読むだけでファイル書いてないので、たとえ目的の動作をしたとしても、ファイル自体は書き変わらない、ということになります。
このプログラムは、条件にあった行を(少し加工して) ArrayListの変数 resultに追加しています。
最終的に、result.Countでいくつ格納できたか表示されています。
これを応用すれば、「目的の行だけ resultに収納する」ことができます。
それを元のファイルに書き戻せば目的達成です。
その前に、別ファイルに書き出せば、元のファイルを壊さずに、動作の確認できます。
kmee 様
回答ありがとうございます。
txtファイルを2個作って1個目を全てのデータを格納し
2個目のファイルに重複無しのデータを格納する用にPGを作ることにしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VB6側からテキストファイルをクリアにする方法
Visual Basic(VBA)
-
テキストファイルの特定行の削除方法
Visual Basic(VBA)
-
テキストボックスの中身をリセット(クリア)したい
Visual Basic(VBA)
-
-
4
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
-
5
テキストファイルクリア .net2005 VB
Visual Basic(VBA)
-
6
【VBA】テキストファイルを指定行数からの読み込み
Visual Basic(VBA)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
txtファイルから特定の文字列が書かれた行だけを取得や削除するソフト
フリーソフト
-
9
EXCEL VBAでテキストファイルの特定の場所にデータを書き込む方法
Visual Basic(VBA)
-
10
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
11
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
12
ファイルの先頭行を全て削除したい
Windows Vista・XP
-
13
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
14
【VBA】テキストファイルから特定の文字列を抽出して、エクセルに出力する
Excel(エクセル)
-
15
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
16
《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理
Excel(エクセル)
-
17
アクセスからエクセルのシートを追加して、名前をつける方法
Excel(エクセル)
-
18
テキストファイルの最終行を消すには。
Visual Basic(VBA)
-
19
Access サブフォームでの選択行の取得
その他(データベース)
-
20
VB.netでDLLを読み込んで実行する際に、スタックを不安定にしていますというエラーが出ます。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
事務の派遣で働いています。多...
-
共有フォルダに誰が何にアクセ...
-
特定のエクセルファイルを起動...
-
メールで送られてきたワードの...
-
拡張子が「cda」のファイルを聞...
-
Access VBA を利用して、フォル...
-
【Excel】[Expression.Error] ...
-
複数ファイルのデータの統合に...
-
社内Excel共有ブックでの保存ト...
-
エクセルファイルのデータ転記...
-
MATLABで波形を一周期ごとに区...
-
Excel VBA 処理後データが重た...
-
大量のCSVデータを行列の変換を...
-
Pythonで、データファイルと列...
-
CSVの項目行を削除して一つのフ...
-
VBAでCSVファイルが使用中かど...
-
月が変わったら自動でシートが...
-
JSONファイルの置き場所について
-
AccessVBAで作成したExcelファ...
-
ファイルの先頭に追加書込みす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共有フォルダに誰が何にアクセ...
-
【Excel】[Expression.Error] ...
-
特定のエクセルファイルを起動...
-
Batch: フォルダ内の特定のファ...
-
VBAでCSVファイルが使用中かど...
-
XMLデータを変換し印刷する方法
-
AccessVBAで作成したExcelファ...
-
月が変わったら自動でシートが...
-
Access VBA を利用して、フォル...
-
tmpファイル なぜできる?削除...
-
excelを共有ファイルにすると行...
-
Excel VBA 処理後データが重た...
-
(Excelマクロ)datファイルをエ...
-
エクセルファイルのデータ転記...
-
社内Excel共有ブックでの保存ト...
-
大量のCSVデータを行列の変換を...
-
【アクセス】「ほかのユーザー...
-
ファイルの途中に文字列を挿入
-
拡張子が「cda」のファイルを聞...
-
CSVの項目行を削除して一つのフ...
おすすめ情報
お返事ありがとうございます。
データの保存、読み込みPGは完成しています。
削除方法は
①ファイルを読み込んで削除する方法。
②ファイルを保存時にすでに登録されている同じデータを削除し保存したいです。
VBをはじめて一ヶ月の初心者です。
もし良ければコードを教えてもらえればありがたいです。
よろしくお願いします。