2017-03-08 4 views
1

VBA를 통해 .dtf (IBM 데이터 전송 파일)를 편집하고 싶습니다. Excel에서 열면 문제가 발생하여 파일을 한 줄씩 읽고 새로운 .dtf 파일로 내보낼 수 있기를 바랍니다. 나는 .dtfEXCEL VBA 읽기/쓰기. dft 파일 (IBM Data Tranfer)

INPUT

OUPUT

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 
+0

과 같아야 단지와 함께. 그게 의도 였나요? 나는 그것이 당신의 문제와 관련이 있다고는 생각하지 않지만. 입력 파일의 인코딩이 무엇인지 확인할 수 있습니까? – Storax

+0

입력 파일의 인코딩은 유니 코드 (UNICODE)입니다. 맞습니까? – Storax

+1

실제로 유니 코드 (UNICODE)였습니다. 방금 http://stackoverflow.com/questions/6947749/how-to-check-if-a-txt-file-is-in-ascii-or-utf-8-format-in-windows-environment를 확인하는 방법을 배웠습니다. – BuckTurgidson

답변

2

그래서에 문자열을 Print #1하려고 할 때 뭔가 잘못, 나는 당신의 입력 파일은 다음 다음과 같은 기능을 사용 coud 유니 코드 파일입니다 가정

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) 

그래서 코드는 CRLF를 건너 출력 = 출력 및 라인은이 다음

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