No.1ベストアンサー
- 回答日時:
下記でいかがでしょうか?
"\"を区切りに配列に取り込んで、数値なら何らかの計算をしています。
厳密な条件がわかりませんので、うまくアレンジして使ってください。
Sub TxtConv()
Dim Ary As Variant
Dim Txt As String
Dim i As Integer
Txt = "ABCDE\X2\058965478965\X0\FGH"
Ary = Split(Txt, "\")
Txt = ""
For i = LBound(Ary) To UBound(Ary)
If Txt <> "" Then Txt = Txt & "\"
If IsNumeric(Ary(i)) Then
Ary(i) = Ary(i) * 100
End If
Txt = Txt & Ary(i)
Next
End Sub
No.2
- 回答日時:
正規表現を使うと便利です。
今回は、大量のデータを考えていませんでしたので、出力は、溜めてから出しましたが、多い場合は、その都度、出力していったほうが安全です。
Option Explicit
Sub TextRelace()
Dim MyPath
Dim MyInFile As String
Dim MyOutFile As String
Dim lngCount As Long
Dim textLine As String
Dim objRe As Object
Dim Fno As Integer
Dim myDataLen As Integer
Dim myData As String, myNewData As String
Dim NewTextLines As String
Dim Matches As Object, Match As Variant
Dim buf As String
Dim Ret As Variant
'
'ユーザー設定
'===================================
MyPath = ThisWorkbook.Path & "\" 'パス名
MyInFile = "test01.txt" '入力ファイル
MyOutFile = "test02.txt" '出力ファイル
'===================================
'
If Dir(MyPath & MyInFile) = "" Then MsgBox "ファイルがありません", 16 _
: Exit Sub
Fno = FreeFile
Set objRe = CreateObject("VBScript.RegExp")
With objRe
.Pattern = "\\X2\\(\d+)\\X0\\" '正規表現パターン
.Global = True '同一ライン上で、複数の置換可能
Open MyInFile For Input As #Fno
Do While Not EOF(1)
Line Input #Fno, textLine
If .test(textLine) Then
buf = textLine
Set Matches = .Execute(buf)
For Each Match In Matches
myData = .Replace(Match, "$1")
'計算例
'===================================
Ret = CDbl(myData) / 2
myDataLen = Len(Ret)
myNewData = Format$(Ret, String(myDataLen, "0"))
'文字列で戻すなら、どのような方法でも可能
'===================================
buf = Replace(buf, myData, myNewData)
Next Match
NewTextLines = NewTextLines & buf & vbCr
End If
Loop
Close #Fno
'
'出力
Fno = FreeFile
Open MyOutFile For Output As #Fno
Print #Fno, NewTextLines
Close #Fno
End With
Set objRe = Nothing
End Sub
この回答へのお礼
お礼日時:2005/05/18 20:59
参考にしようと思いましたが、私には少し敷居が高く、うまくカスタマイズできませんでした。
今回は同じ行にたくさん\X2\とかのフラグがあって、それぞれを抜き出す必要がありましたので、No.1の方のsplitで配列に抜き出してセルへ振り分け、計算後戻すというやりかたがうまくいきました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) テキストの背後にあるオブジェクトとは 3 2023/01/03 20:22
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル形式またはファイル拡...
-
シェルコマンドの 2>&1 とはど...
-
VC++でUTF-8のファイルを出力し...
-
(VBA)書式が変更されてしまい...
-
出力をExcelにすることは可能??
-
C言語による10進数→16進数変換...
-
ファイル出力の場所を指定
-
VB.NETでExcelファイルを出力す...
-
OCRで起こしたテキスト文字をCS...
-
gccによって、BOM付きのUTF-8で...
-
C言語で16進数をテキスト出力し...
-
stdin,stdoutについて
-
C言語での印刷方法
-
Access のレポートをPDFに変換...
-
VBA フォルダ見える化のコード...
-
VC++での外部ファイル(batファ...
-
AccessVBA複数レポート条件毎に...
-
MS-Word で作成した表をLatexに...
-
拡張子.vsdをイラストレーター...
-
標準出力とファイルに効率的に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Paiza Cloudです。 どうやれば...
-
Paiza Cloudです。学籍番号と氏...
-
Acccess レポートをグループ別...
-
ファイル出力の場所を指定
-
コマンド(例えばls)の出力結果...
-
VC++でUTF-8のファイルを出力し...
-
テキストファイルに改行コード...
-
シェルコマンドの 2>&1 とはど...
-
VBA でメモ帳へ保存する際の保...
-
ファイル形式またはファイル拡...
-
fortranのtxtファイル出力書式...
-
CSV形式に変換
-
printfだと出力されるのにfprin...
-
C++ fprintf_sの使い方がわからん
-
c言語の質問です。 ランダムに4...
-
Wordマクロで指定したフォルダ...
-
pcap形式データをテキストへ抽出
-
二次元配列をクリップボードに...
-
C++/CLIにて、System.String^型...
-
raw形式からbmp形式への書き込...
おすすめ情報