◆オブジェクトを使用したテキスト形式の読み込み・書き込み
入出力で紹介したテキスト形式の読み込み・書き込みと同じ事が、Fileオブジェクトを
使用してできます。
テキスト形式のファイルを1行づつ読んで、新しいファイルに 1行づつ書き込みを行って
います。
最後に読み込んだファイルを削除して、新たに作成したファイルに読み込んだ
ファイルの名前を付けています。
ファイル番号を気にしなくても良いので、こちらの方が分かりやすいでしょうか?
Sub FileDuplicate()
Const ForReading = 1
Dim FileType, Prompt, TempFileNamePath, textline As String
Dim File_Object_Name As String
Dim File_Object, Duplicate_Object As Object
Dim FileNamePath As Variant
FileType = "すべての ファイル (*.*),*.*"
Prompt = "File を選択してください"
FileNamePath = SelectFileNamePath(FileType, Prompt)
If FileNamePath = False Then
End
End If
Set File_Object = CreateObject("Scripting.FileSystemObject"). _
OpenTextFile(FileNamePath, ForReading, False)
TempFileNamePath = FileNamePath & _
Format(Now, "yyyymmddhhmmss") & ".txt"
Set Duplicate_Object = CreateObject("Scripting.FileSystemObject"). _
CreateTextFile(TempFileNamePath)
Do While File_Object.AtEndOfStream <> True
textline = File_Object.ReadLine
Duplicate_Object.WriteLine (textline)
Loop
File_Object.Close
Duplicate_Object.Close
Set File_Object = CreateObject _
("Scripting.FileSystemObject").GetFile(FileNamePath)
File_Object_Name = File_Object.Name
File_Object.Delete
Set Duplicate_Object = CreateObject _
("Scripting.FileSystemObject").GetFile(TempFileNamePath)
Duplicate_Object.Name = File_Object_Name
End Sub
Function SelectFileNamePath(FileType, Prompt) As Variant
SelectFileNamePath = Application.GetOpenFilename(FileType, , Prompt)
End Function
example25 をダウンロードして動作を確認してください。