|
■No2744 (Hirotow さん) に返信
Hirotow 様 Jitta 様 ぼのぼの様
なかなか面倒な質問にご連絡頂き、大変うれしく思います。
※.Net のソース、ありがとうございます。 VBとこんなにも違うものなのですね!! 使いこなすとなると・・かなり勉強しなければなりません。
こちらを閉じさせて頂きました後、VBA系のサイトに 助けを求め、あとは自力で整えてなんとか形になってまいりました。
他のサイトに質問をさせて頂いておりますので こちらで継続して教えて頂くのは、多くの方に失礼かと存じますので 現状をご説明させて頂きます。
【やりたいこと】 これは、頭書の記載と変わりありません。
【残っている問題】 テキストファイルのデータ長(行の長さ)が可変であるため 正しく1行毎に読み込めていないため、正しく置き換えができていない箇所がある という問題が残っております。 あとは、機能的にはうまくいっているようです。
以下に現状のソースを転載いたします。
Public Const Old_Word1 = "SERVER=" Public Const New_Word1 = "CONNECTION=" Public Const Out_Dir = "C:\apps\" Public Const Out_Log = "STRING_CONV.log" Option Compare Text Type Record Len_Data As String * 80 End Type ' ' ' Sub Main() Dim Out_SubDir As String Dim WK_Msg As String Dim FSO As Object, Fol As Object, MyFol As Object Dim MyFile As Object Dim OutFile As String Dim hFso As FileSystemObject Set hFso = New FileSystemObject Dim Cnt_Line As Integer Dim MyRecord As Record, RecordNumber ChDir Out_Dir Open Out_Log For Output As #1 Write #1, Now(), "STRING CONVERSION START"
Set FSO = CreateObject("Scripting.FileSystemObject") Set Fol = FSO.GetFolder(Out_Dir) For Each MyFol In Fol.SubFolders Out_SubDir = Out_Dir & MyFol.Name Write #1, Write #1, Now(), "Folder = " & Out_SubDir For Each MyFile In MyFol.Files If MyFile.Name Like "*.ACX" Then Out_File = Out_SubDir & "\" & MyFile.Name Open Out_File For Random As #2 Len = Len(MyRecord) RecordNumber = 1 Do While Not EOF(2) Get #2, RecordNumber, MyRecord Debug.Print Seek(2) If InStr(1, MyRecord.Len_Data, Old_Word1) <> 0 Then str1 = Replace(MyRecord.Len_Data, Old_Word1, New_Word1) MyRecord.Len_Data = str1 Put #2, RecordNumber, MyRecord.Len_Data Write #1, Now(), "File = " & Out_File, "Conv Rule1 = " & Seek(2) - 1, End If RecordNumber = RecordNumber + 1 Loop Close #2 End If Next Next
Set hFso = Nothing Set Fol = Nothing: Set FSO = Nothing Close #1 End Sub
皆様ご丁寧にありがとうございます。 以上です。
|