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