[[20210907165517]] 『テキストファイルの置換について』(ひめちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『テキストファイルの置換について』(ひめちゃん)

置換方法について教えてください。

◆エクセルシートには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


隠居Z様

ありがとうございます。
ただ、私の説明不足で申し訳ございません。

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

隠居Z様

ありがとうございました。
上手くいきました。

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.