[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストファイルの置換について』(ひめちゃん)
置換方法について教えてください。
◆エクセルシートにはA2にフルパス、A4のテキストファイルの編集する行を記入するようにしておりVBAを実行したいと思っています。
A列
1行目 ●●ファイルのフルパスを入力
2行目 フルパス
3行目 編集する行
4行目 1
◆テキストファイル
【変更前】
111111111カイケイカンリシヤ
20111
29900
以下データあり
【変更後】
177111111カイケイカンリシヤ
20111
29900
以下データあり
Sub text_edit()
'変数の型宣言 Dim file_path As String Dim row_num As Integer Dim endrow As Integer Dim strTemp As String
'情報収集 file_path = Cells(2, 1) row_num = Cells(4, 1)
'テキストファイルを開く Workbooks.OpenText Filename:=file_path _ , Origin:=932, startrow:=1, DataType:=xlDelimited, textQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=False 'データ編集 strTemp = Replace(Cells(row_num, 1), "11", "77", 2, 1) endrow = Cells(Rows.Count, 1).End(xlUp).Row 'データを変数化 data_array = Range(Cells(1, 1), Cells(endrow, 1)) 'ファイルを閉じる Application.DisplayAlerts = False ActiveWindow.Close 'テキスト出力 Open file_path For Output As #1 i = 1 For i = 1 To endrow Print #1, data_array(i, 1) Next Close #1 End Sub
1行目の2文字目と3文字目を1回だけ置き換えたたいと思います。
ネットで調べて以上のようにしてみましたが上手くいきません。
よろしくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
こんばんは ^^ こんな感じでせうか?。。。^^; 同じフォルダに有るA.txtをOUT.txtに書き換えています。 パス、ファイル名等は適宜置き換えて下さい。他にも様々 な方法は有ると思いますが、一案です。m(_ _)m Option Explicit Sub OneInstanceMain() Dim fd, fnm1, fnm2, tStr fd = ThisWorkbook.Path & "\" fnm1 = "A.txt" fnm2 = "OUT.txt" If Dir(fd & fnm1) <> "" Then Open fd & fnm1 For Input As #1 Open fd & fnm2 For Output As #2 Line Input #1, tStr Print #2, "177111111カイケイカンリシヤ" Do Until EOF(1) Line Input #1, tStr Print #2, tStr Loop Close #1, #2 End If End Sub
A.txtの中身
111111111カイケイカンリシヤ
20111
29900
以下データあり
(隠居Z) 2021/09/07(火) 18:05
ありがとうございます。
ただ、私の説明不足で申し訳ございません。
1行目の「111111111カイケイカンリシヤ」ですが
3文字目までが固定でそれ以降は抽出した時ごとに数値が変化します。
例えば・・・
「111222222カイケイカンリシヤ」となる場合もあります。
この場合でも
「177222222カイケイカンリシヤ」としたいのです。
2文字目と3文字目を変換したいと考えております。
(ひめちゃん) 2021/09/09(木) 17:01
こんばんは ^^ 私の勘違いかも。。。m(_ _)m え〜と。。。固定値ではなく、読込みファイルの一行目の 情報を変換するのですね。 (隠居Z) 2021/09/09(木) 19:05
こんな事でせうか。。。? (*^ ^*)...m(_ _)m Option Explicit Sub OneInstanceMain() Dim fd, fnm1, fnm2, tStr, tmp fd = ThisWorkbook.Path & "\" fnm1 = "A.txt" fnm2 = "OUT.txt" If Dir(fd & fnm1) <> "" Then Open fd & fnm1 For Input As #1 Open fd & fnm2 For Output As #2 Line Input #1, tStr tmp = Left(tStr, 1) & "77" & Mid(tStr, 4) Print #2, tmp Do Until EOF(1) Line Input #1, tStr Print #2, tStr Loop Close #1, #2 End If End Sub (隠居Z) 2021/09/09(木) 19:18
ありがとうございました。
上手くいきました。
Replace以外にも以下のようなやり方があるんですね。
勉強になりました。
tmp = Left(tStr, 1) & "77" & Mid(tStr, 4)
(ひめちゃん) 2021/09/10(金) 15:18
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.