2017-07-11 29 views
0

これは私が実際に尋ねた以前の質問から続きます。私はこれまでにうまくいかなかったExcelファイルからテキストファイルを生成するときに、テキストファイルから末尾の空白行を削除する方法を見つけることが切望されています。私は今すぐ下のコードを見つけました。私はそれを実行すると、私はそれが私が望んでいるものの基礎を持っていることがわかりますが(私は思うが)、それを修正するスキルはないので、余白を削除します。誰も私がこのような厄介な空白を削除することができますので、私はこれを修正するのを助けることができますか?VBAを使用してテキストファイルから空白行を削除する

Sub AltText() 
    Dim File As String 
    Dim VecFile() As String, Aux As String 
    Dim i As Long, j As Long 
    Dim SizeNewFile As Long 

    File = Application.GetOpenFilename 

    'Import file lines to array excluding first 3 lines and 
    'lines starting with "-" 
    Open File For Input As 1 
    i = 0 
    j = 0 
    Do Until EOF(1) 
    j = j + 1 
    Line Input #1, Aux 
    If j > 3 And InStr(1, Aux, "-") <> 1 Then 
     i = i + 1 
     ReDim Preserve VecFile(1 To i) 
     VecFile(i) = Aux 
    End If 
    Loop 
    Close #1 
    SizeNewFile = i 

    'Write array to file 
    Open File For Output As 1 
    For i = 1 To SizeNewFile 
    Print #1, VecFile(i) 
    Next i 
    Close #1 

    MsgBox "File alteration completed!" 

End Sub 
+0

ファイルをインポートして、テキストの後の空白スペースを削除したいだけですか?あなたは['TRIM()'](https://www.techonthenet.com/excel/formulas/trim.php)を試しましたか? – BruceWayne

+0

それは私がやろうとしてきたことですが、大成功なしには、それがいかに効果的に働くか把握しています。 – Dyhouse

答えて

2

空白の行を削除するには、次のコードを試してください:

Sub AltText() 
    Dim inFile As String 
    Dim outFile As String 
    Dim data As String 

    inFile = Application.GetOpenFilename 
    Open inFile For Input As #1 

    outFile = inFile & ".alt" 
    Open outFile For Output As #2 

    Do Until EOF(1) 
     Line Input #1, data 

     If Trim(data) <> "" Then 
     Print #2, data 
     End If 
    Loop 

    Close #1 
    Close #2 

    Kill inFile 
    Name outFile As inFile 

    MsgBox "File alteration completed!" 
End Sub 
+0

これは認識されなかったファイル形式で保存された ".txt"で置き換えられた ".alt"部分を除いて完全に動作します。私の唯一の質問は、ファイル名に.txtを付けて保存することです。ファイル名を開いたファイル名と同じに保つように実行する方法はありますか?私は元のファイルを上書きしますか? – Dyhouse

+0

この要件を処理するコードを変更しました。基本的にファイルの名前を変更するだけです。 –

+0

ありがとうBrian - これは完全に完全に働いています。私は真剣にこれに私の髪を引っ張っている。ありがとうございました! – Dyhouse

0

あなたは空白や改行文字を探すために必要があるので、あなたが行を読んだ後、内容を確認してください:

dim temp as string 

temp = Replace (aux, chr(10), "") 
temp = Replace (temp,chr(13),"") 
temp = Rtrim(Ltrim(temp)) ' remove just blank stuff 

は今の長さをチェック:

if j > 3 and Len(temp) <> 0 then 
    ...... 
    add the lines 

コードは次のようになります:

Sub AltText() 
    Dim File As String 
    Dim VecFile() As String, Aux As String 
    Dim i As Long, j As Long 
    Dim SizeNewFile As Long 

    File = Application.GetOpenFilename 

    'Import file lines to array excluding first 3 lines and 
    'lines starting with "-" 
    Open File For Input As 1 
    i = 0 
    j = 0 
    Do Until EOF(1) 
    j = j + 1 
    Line Input #1, Aux 

    '===== 
    dim temp as string 

    temp = Replace (aux, chr(10), "") 
    temp = Replace (temp,chr(13),"") 
    temp = Rtrim(Ltrim(temp)) ' remove just blank stuff 
    '====== 

    If j > 3 And Len(temp) <> 0 Then 
     i = i + 1 
     ReDim Preserve VecFile(1 To i) 
     VecFile(i) = Aux 
    End If 
    Loop 
    Close #1 
    SizeNewFile = i 

    'Write array to file 
    Open File For Output As 1 
    For i = 1 To SizeNewFile 
    Print #1, VecFile(i) 
    Next i 
    Close #1 

    MsgBox "File alteration completed!" 

End Sub 
+0

あなたの答えをありがとう。これを試して実行すると、すぐにコンパイルエラー "subまたは関数が定義されていません"が表示され、 'char'が強調表示されます。どのようにこれを定義しますか? – Dyhouse

+0

私の間違いは、charの代わりにchrを使ってください。私はいつもそうしています... – iDebug

関連する問題