- 締切済み
ファイル内容を変換後に別フォルダへコピーしたい
エクセルVBAにて 下記フォルダ状況となっている場合に C\元データ\複数のtxtファイル C\変換後データ 元のデータ内にあるtxtファイルの中身を変換し Open strFileName For Input As #intFF Do Until EOF(intFF) Line Input #intFF, strREC GYO = GYO + 1 Cells(GYO, 1).Value = 付け加えたい文字 + strREC Loop 変換したファイルを C\変換後データへコピーしたいのですが どのようししたらよろしいのでしょうか? コピーしたファイル名は元のファイル名と同じにしたいです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
’選択されたフォルダからtxtファイルを読んで、適当な変更をして別のフォルダに書き出す ’Constのところは環境に合わせて設定する必要がある Option Explicit Sub TexasHit() Const fromPath = "d:\tmp\" Const toPath = "d:\tmp\tmp\" Const strAdd = "<付け加えたい文字>" Dim FSO As Object Dim intFF01, intFF02 As Integer Dim strFileName As Variant Dim strREC As String Dim GYO As Long Dim FileExt As Variant Application.ScreenUpdating = False Set FSO = CreateObject("Scripting.FileSystemObject") 'With FSO.GetFolder(fromPath) 'MsgBox .Files.Count & "個のファイルがあります", vbInformation For Each strFileName In FSO.GetFolder(fromPath).Files FileExt = Mid(strFileName, InStrRev(strFileName, ".") + 1) If (FileExt = "txt") Then '(ファイル1つについての処理) intFF01 = FreeFile() Open strFileName For Input As #intFF01 intFF02 = FreeFile() FileExt = Mid(strFileName, InStrRev(strFileName, "\") + 1) Open toPath & FileExt For Output As #intFF02 Do Until EOF(intFF01) Line Input #intFF01, strREC Print #intFF02, strAdd & strREC GYO = GYO + 1 Cells(GYO, 1).Value = strAdd + strREC Loop Close End If Next 'End With Set FSO = Nothing Application.ScreenUpdating = True End Sub
- kigoshi
- ベストアンサー率46% (120/260)
作りたいのはテキストファイルですよね? それとも、テキストファイルを読み込んだExcelファイルですか? 前者だったら、ファイルをコピーするのではなく、読み込んで文字を付加して 変換後データフォルダへ書き込む、という手順でいいのではないでしょうか。 Dim fromPath, toPath, strFileName, strREC, addStr As String Dim intFF1, intFF2 As Integer fromPath = "C:\元データ\" toPath = "C:\変換後データ\" strFileName = "対象ファイル.txt" addStr = "★追加★" intFF1 = FreeFile() Open fromPath & strFileName For Input As #intFF1 intFF2 = FreeFile() Open toPath & strFileName For Output As #intFF2 Do Until EOF(intFF1) Line Input #intFF1, strREC Print #intFF2, addStr & strREC Loop Close