Sub ReadFileReplaceAndSaveAsNewFile()
Dim sourceFileNumber As Integer
Dim destinationFileNumber As Integer
Dim fileContent As String
Dim textFilePath As String
Dim replacedFilePath As String
Dim cellValue As String
' 指定原文本文件路径和新文件路径
textFilePath = "C:\Users\xxx\Desktop\testvba\insert1.txt"
replacedFilePath = "C:\Users\xxx\Desktop\testvba\replaced.txt"
' 读取工作表A1单元格的值
cellValue = ThisWorkbook.Sheets("Sheet1").Range("A1").Value
' 为源文件分配一个编号
sourceFileNumber = FreeFile()
' 使用错误处理以防打开源文件过程中出现问题
On Error GoTo ErrorHandler
Open textFilePath For Input As #sourceFileNumber
' 使用EOF函数检查是否已到达源文件的末尾
If Not EOF(sourceFileNumber) Then
' 如果没有到达文件末尾,读取文件内容
fileContent = Input$(LOF(sourceFileNumber), sourceFileNumber)
Else
' 如果已到达文件末尾,设置fileContent为空字符串
fileContent = ""
End If
' 关闭源文件
Close #sourceFileNumber
' 替换文件内容中的 {insert1} 标记为 A1 单元格的值
fileContent = Replace(fileContent, "{insert1}", cellValue)
' 为目标文件分配一个编号
destinationFileNumber = FreeFile()
' 打开目标文件以用于写入,并创建新文件或覆盖已有文件
Open replacedFilePath For Output As #destinationFileNumber
' 将替换后的内容写入新文件
Print #destinationFileNumber, fileContent
' 关闭目标文件
Close #destinationFileNumber
' 操作成功完成的消息
MsgBox "File content replaced and saved to " & replacedFilePath
Exit Sub
ErrorHandler:
' 如果在操作文件时出现错误,将显示错误消息
MsgBox "An error has occurred: " & Err.Description, vbCritical
' 确保所有打开的文件都被关闭
If sourceFileNumber <> 0 Then
Close #sourceFileNumber
End If
If destinationFileNumber <> 0 Then
Close #destinationFileNumber
End If
End Sub