2017-03-08 23 views
1

VBAを使用して.dtf(IBM Data Transferファイル)を編集したいと考えています。 Excelで開くと問題が発生するので、ファイルを1行ずつ読み込んで新しい.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あなたの入力ファイルは、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 

と置き換える

ただ

output = ReadUniCodeTextFile(TemplateFilePath) 

'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 

だからあなたのコードは、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 
関連する問題