EXCEL VBA 读/写。 dft 文件(IBM 数据传输)
EXCEL VBA read / write . dft file (IBM Data Tranfer)
我想通过 VBA 编辑 .dtf(IBM 数据传输文件)。在 excel 中打开它给我带来了问题,所以我希望逐行读取文件并导出到新的 .dtf。但是当我尝试 Print #1
字符串到 .dtf
时出现了问题
Sub test()
Dim TemplateFilePath As String
TemplateFilePath = "C:\TemplateFile.dtf"
Call CreateDataTranderFile(TemplateFilePath)
End Sub
Public Sub CreateDataTranderFile(TemplateFilePath As String)
Dim output As String
Dim OutFullPath As String
Dim Line As String
Dim FileNum As Integer
OutFullPath = "C:\tmpTranferfile.dtf"
'Read from template
FileNum = FreeFile()
Open TemplateFilePath For Input As #FileNum
While Not EOF(FileNum)
Line Input #FileNum, Line
output = output & Line
Wend
Close #FileNum
'Write .dtf
Open OutFullPath For Output As #1
Print #1, output
Close
End Sub
因此,我假设您的输入文件是一个 UNICODE 文件,那么您可以使用以下函数
Function ReadUniCodeTextFile(inpFile As String) As String
Dim sText As String
Dim objFSO As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(inpFile, 1, False, -1)
ReadUniCodeTextFile = objFile.ReadAll
objFile.Close
End Function
并替换
'Read from template
FileNum = FreeFile()
Open TemplateFilePath For Input As #FileNum
While Not EOF(FileNum)
Line Input #FileNum, Line
output = output & Line
Wend
Close #FileNum
刚好
output = ReadUniCodeTextFile(TemplateFilePath)
那么您的代码应该如下所示
Public Sub CreateDataTranderFile(TemplateFilePath As String)
Dim output As String
Dim OutFullPath As String
Dim Line As String
Dim FileNum As Integer
OutFullPath = "C:\tmpTranferfile.dtf"
'Read from template
output = ReadUniCodeTextFile(TemplateFilePath)
'Write .dtf
Open OutFullPath For Output As #1
Print #1, output
Close
End Sub
我想通过 VBA 编辑 .dtf(IBM 数据传输文件)。在 excel 中打开它给我带来了问题,所以我希望逐行读取文件并导出到新的 .dtf。但是当我尝试 Print #1
字符串到 .dtf
Sub test()
Dim TemplateFilePath As String
TemplateFilePath = "C:\TemplateFile.dtf"
Call CreateDataTranderFile(TemplateFilePath)
End Sub
Public Sub CreateDataTranderFile(TemplateFilePath As String)
Dim output As String
Dim OutFullPath As String
Dim Line As String
Dim FileNum As Integer
OutFullPath = "C:\tmpTranferfile.dtf"
'Read from template
FileNum = FreeFile()
Open TemplateFilePath For Input As #FileNum
While Not EOF(FileNum)
Line Input #FileNum, Line
output = output & Line
Wend
Close #FileNum
'Write .dtf
Open OutFullPath For Output As #1
Print #1, output
Close
End Sub
因此,我假设您的输入文件是一个 UNICODE 文件,那么您可以使用以下函数
Function ReadUniCodeTextFile(inpFile As String) As String
Dim sText As String
Dim objFSO As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(inpFile, 1, False, -1)
ReadUniCodeTextFile = objFile.ReadAll
objFile.Close
End Function
并替换
'Read from template
FileNum = FreeFile()
Open TemplateFilePath For Input As #FileNum
While Not EOF(FileNum)
Line Input #FileNum, Line
output = output & Line
Wend
Close #FileNum
刚好
output = ReadUniCodeTextFile(TemplateFilePath)
那么您的代码应该如下所示
Public Sub CreateDataTranderFile(TemplateFilePath As String)
Dim output As String
Dim OutFullPath As String
Dim Line As String
Dim FileNum As Integer
OutFullPath = "C:\tmpTranferfile.dtf"
'Read from template
output = ReadUniCodeTextFile(TemplateFilePath)
'Write .dtf
Open OutFullPath For Output As #1
Print #1, output
Close
End Sub