XML ファイルでいっぱいのフォルダーを読み取り、参照番号を特定の形式 (今日の日付 (yymmdd)、イニシャル、00000001 から始まる 8 桁の参照) に変更しようとしています。
例: 120815AB00000001、次に 120815AB00000002 など。各ファイルには 1 つの参照番号があります。<CPAReferenceNumber>タグで囲みます。
Excel と VBA を使用してファイルを読み取り、関連するフィールドを変更しています。参照はデフォルト値に設定されます (以下のコードでは、'This' を 'That' に変更します)。
このコードは、1 つの個別のファイルに対して機能し、正しい変更を行います。ファイルの名前はランダムで、命名規則はありません。これをフォルダー内のすべての XML ファイルに展開することはできません。どんな助けでも大歓迎です。
Sub ReplaceStringInFile()
Dim sBuf As String
Dim sTemp As String
Dim iFileNum As Integer
Dim sFileName As String
sFileName = "c:\Search and Replace Files\blah.XML"
iFileNum = FreeFile
Open sFileName For Input As iFileNum
Do Until EOF(iFileNum)
Line Input #iFileNum, sBuf
sTemp = sTemp & sBuf & vbCrLf
Loop
Close iFileNum
sTemp = Replace(sTemp, "THIS", "THAT")
iFileNum = FreeFile
Open sFileName For Output As iFileNum
Print #iFileNum, sTemp
Close iFileNum
End Sub
ヘルプの後、以下のコードに変更しましたが、これによりエラーが発生しています: sFileName はコンテキストから外れています。テキストの変更は、xml ファイルには適用されません。
Sub ReplaceStringInFile()
Dim sBuf As String
Dim sTemp As String
Dim iFileNum As Integer
Dim sFileName As String
Const sSearchString As String = "c:\blah\*.xml"
Const directoryString As String = "c:\blah\"
iFileNum = FreeFile
sFileName = Dir(sSearchString)
Do While sFileName <> ""
Open directoryString & sFileName For Input As iFileNum
Do Until EOF(iFileNum)
Line Input #iFileNum, sBuf
sTemp = sTemp & sBuf & vbCrLf
Loop
Close iFileNum
sTemp = Replace(sTemp, "IDNUMBER", "******SUCCESS!!!!!!******")
iFileNum = FreeFile
Open sFileName For Output As iFileNum
Print #iFileNum, sTemp
Close iFileNum
Debug.Print "Do something with file named " & sFileName
sFileName = Dir()
Loop
End Sub