![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
vb6なんですけどテキストファイルを読み込んで
偶数行のある文字を置換したいんですけど
このサンプルをどういう風に改変して偶数行の文字列をある文字列に
置換するコードを書いてよいのかわかりません。
置換するのはreplace関数を使うと思うのですが。
教えて下さい。お願いします。
Dim n As Long, tmp As String
n = FreeFile
Open "D:\Test.txt" For Input As #n
Line Input #n, tmp
Close #n
No.2ベストアンサー
- 回答日時:
Sub Test()
Dim l_strBuff As String
'一度に読み込み
l_strBuff = ReadFile("C:\test.txt")
'偶数行の置き換え
l_strBuff = Replase偶数(l_strBuff, "AA", "ZZ")
End Sub
'偶数行の置き換え
Private Function Replase偶数(p_strBuff As String, str1 As String, str2 As String) As String
Dim l_varBuff As Variant
Dim i As Long
l_varBuff = Split(p_strBuff, vbCrLf)
For i = LBound(l_varBuff) + 1 To UBound(l_varBuff) Step 2
l_varBuff(i) = Replace(l_varBuff(i), str1, str2)
Next i
Replase偶数 = Join(l_varBuff, vbCrLf)
End Function
'一度に読み込み
Private Function ReadFile(p_strPath As String) As String
Dim l_fsoObj As Object 'Scripting.FileSystemObject
Dim l_rstTxt As Object 'Scripting.TextStream
Dim l_strRet As String
Set l_fsoObj = CreateObject("Scripting.FileSystemObject")
Set l_rstTxt = l_fsoObj.OpenTextFile(p_strPath, 1)
l_strRet = l_rstTxt.ReadAll()
l_rstTxt.Close
ReadFile = l_strRet
End Function
No.4
- 回答日時:
Sub test01()
Dim ln As Long, tmp As String
ln = 0
Open "C:\Documents and Settings\XXXX\My Documents\test.txt" For Input As #1
Open "C:\Documents and Settings\XXXX\My Documents\Testo.txt" For Output As #2
While Not EOF(1)
Line Input #n, tmp
' MsgBox tmp
ln = ln + 1
' MsgBox Ln - 2 * Int(Ln / 2)
If ln - 2 * Int(ln / 2) = 0 Then
tmpx = Replace(tmp, "bbb", "CCCC")
Else
tmpx = tmp
End If
Print #2, tmpx
Wend
Close #1
Close #2
End Sub
旧いスタイルですが、良ければ。
例
aaabbbxxx
ssddbbbgggg
ddcvbbb
ffghbbbbmmm
↓
aaabbbxxx
ssddCCCCgggg
ddcvbbb
ffghCCCCbmmm
No.3
- 回答日時:
'一度に書き込み
Private Sub WriteFile(p_strPath As String, p_strBuff As String)
Dim l_fsoObj As Object 'Scripting.FileSystemObject
Dim l_wstTxt As Object 'Scripting.TextStream
Set l_fsoObj = CreateObject("Scripting.FileSystemObject")
'第二引数:1は読み込み
'第二引数:2は書き込み
'第二引数:8は追加
'第三引数:Trueは、ファイルが存在していなければ作成する
Set l_wstTxt = l_fsoObj.OpenTextFile(p_strPath, 2, True)
l_wstTxt.Write p_strBuff
l_wstTxt.Close
End Sub
No.1
- 回答日時:
<C:\Temp\Test.txt>
001: AABBCC
002: AABBCC
003: AABBCC
004: AABBCC
1
001: AABBCC
2
002: AABBCC
3
003: AABBCC
4
004: AABBCC
5
行カウンターとデータを上のように表示するコードは次のようです。
Private Sub コマンド0_Click()
Dim I As Integer
Dim strData As String
Do
strData = FileRead("C:\Temp\Test.txt")
I = I + 1
Debug.Print I
Debug.Print strData
Loop Until strData = ""
End Sub
表示を偶数行だけに限定する。
無行もスキップする。
などの条件を付加したコードは以下のようです。
Private Sub コマンド0_Click()
Dim I As Integer
Dim strData As String
Do
strData = FileRead("C:\Temp\Test.txt")
I = (I + 1) Mod 2
If I = 0 And strData <> "" Then
Debug.Print I
Debug.Print Replace(strData, "AA", "ZZ")
End If
Loop Until strData = ""
End Sub
<実行結果>
0
002: ZZBBCC
0
004: ZZBBCC
少し、判定ルーチンを工夫すれば、次のように書くことも可能です。
(strData = "")の減算でIのカウントに狂いが出ますが、どうせ終了するので不具合は発生しません。
Private Sub コマンド0_Click()
Dim I As Integer
Dim strData As String
Do
strData = FileRead("C:\Temp\Test.txt")
I = (I + 1) Mod 2 + (strData = "")
If I = 0 Then
Debug.Print I
Debug.Print Replace(strData, "AA", "ZZ")
End If
Loop Until strData = ""
End Sub
※ここでは、1行づつ読み込む 自作の FileRead 関数を利用しています。
※が、基本的なルーチンは変らないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
多数のサブディレクトリ内のフ...
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
拡張子を元に戻す
-
ftpコマンドで複数のファイルを...
-
Windowsのバッチファイルを利用...
-
.txtではなく.logの方が良いの...
-
テキストファイルで提出とは?
-
renameコマンドについて
-
wikiでローカルファイルのリン...
-
COPYコマンドで結合すると余計...
-
テキスト(txt)→ワード(docx)へ...
-
FLEXlmのライセンス使用状況を...
-
ファイル名の一部をbatで変更し...
-
コマンドプロンプトで指定した...
-
日本語名ディレクトリーから日...
-
バッチファイルからVBAに引数を...
-
フルパスの中にワイルドカード...
-
テキストファイルを読み込み ...
-
forfilesで検索したファイルを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
ファイルの最後に文字列挿入
-
Windowsのバッチファイルを利用...
-
バッチファイル 複数ファイル...
-
renameコマンドについて
-
psqlでエラーログをとりたい
-
テキストファイルで提出とは?
-
forfilesで検索したファイルを...
-
VBAでエクセルをtxtに変換する...
-
テキスト(txt)→ワード(docx)へ...
-
UWSCでテキストファイルを開い...
-
バッチファイルで文字列削除に...
-
wikiでローカルファイルのリン...
-
ExcelVBA テキストファイルUNIC...
-
コマンドプロンプトで指定した...
おすすめ情報