2017-07-11 16 views
1

Excelワークシート内のデータをテキストファイルに変換して保存するサブルーチンを作成しましたが、最後には空白行がたくさん残されていますテキストファイル。このタブでは、実行するたびに異なる量のデータを取り込むことができるため、問題の原因となっていると思いますが、データを処理する必要があるため、変更するためにできることはほとんどありません。 VBAを使用して、テキストファイルの最後にある空白行(空白)を削除する方法や、最初の場所に空の行を作成しないようにする方法がありますか?私はいくつかの検索をして、私はVBAを使用して主題について多くを見つけることができません。助けてください ?!テキストファイルの最後から空白行を削除する

'Selects appropriate worksheet - Non-MyPayFINAL 
    Sheets("Non-MyPay FINAL").Select 

'Selects all data in column A and copies to clipboard 
    Range("A1", Range("A1").End(xlDown)).Select 
    Selection.Copy 

    'Add a new workbook 
    Workbooks.Add 
    'Paste selected values from previous sheet 
    Selection.PasteSpecial Paste:=xlPasteValues 

    'Build SaveAs file name (for CSV file) 
    MySaveFile = Format(Now(), "DDMMYYYY") & "NonMyPayFINAL" & ".CSV" 
'Save template file as...(for CSV file) 
    ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment 
    Limited\" & MySaveFile), FileFormat:=xlCSV 

    'Build SaveAs file name (for Txt file) 
    MySaveFile = Format(Now(), "DDMMYYYY") & "NonMyPayFINAL" & ".Txt" 
    'Save template file as...(for Txt file) 
    ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment 
    Limited\" & MySaveFile), FileFormat:=xlTextWindows 

私は問題がどこにあるのかと思うテキストファイルをコピーして作成するコードのセクションを更新しました。これに関する助けがあれば大いに感謝します。

私はtxtファイルの最後にテキストを追加できるようにすることで長い道のりをつくっているコードを見つけました。これはシンプルなように見えますが、テキストを削除するのにも同じことができますが、これはまだかなりのハングアップを持っています。

Sub TextFile_Create() 
'PURPOSE: Add More Text To The End Of A Text File 

Dim TextFile As Integer 
Dim FilePath As String 

'What is the file path and name for the new text file? 
    FilePath = "S:\MERIT OUTPUTS FOLDER\MSI Recruitment 
    Limited\11072017MyPayFINAL.txt" 

    'Determine the next file number available for use by the FileOpen 
    function 
    TextFile = FreeFile 

    'Open the text file 
    Open FilePath For Append As TextFile 

    'Write some lines of text 
    Print #TextFile, "Sincerely," 
    Print #TextFile, "" 
    Print #TextFile, "Chris" 

    'Save & Close Text File 
    Close TextFile 

    End Sub 
+0

正直なところ、現在のExcelファイルにある行数だけをコピーするように既存のコードを修正する方がよいでしょう。これはあなたのコードをあまりにも追加するべきではありませんが、テキストファイルから行を削除する必要性を取り除くでしょう – danl

答えて

2

1.テキスト行の末尾から「空白」を削除するには堅牢かつ基本的な方法:テキストファイルの各行の

:文字列に読み込む、最後の文字を取得し、削除した場合それは「空白」です。それがブランクではないまであなたが他の空白を持っていない場合は、あなただけの「置き換え」関数を使用することができ、既存の機能

と削除ブランク

2.

新しいファイルに行を書き、これ以上繰り返して、ドキュメントhere。空白(例:「」)を「」で置き換えてください。先頭および/または末尾の空白を削除するには、trim関数を使用します。ファイルに書き込む前に

3.解析(推奨):

は、ファイルに書き込む前に、上記のいずれかの方法で出力を確認してください。

実際に削除する文字に注意してください。不確かな場合は、作成したテキストファイルをすべての文字を表示できるエディタで表示します。

更新

あなたが特定のデータの代わりに、シート全体を書きたい場合は、それに応じてスクリプトを調整する必要があります。 This SOの答えは、あなたがファイルに特定のデータを書き込む方法の良いスタートを与えるでしょう。上記の機能と組み合わせると、良いことになるはずです。文字列から先頭および/または末尾のスペースを削除するには

第二の更新

前述したように、あなたはtrim機能を使用することができます。ここにはexamplesdocumentationがあります。

+0

このコードがどのように見えるかの例を挙げることができますか?私はかなりVBAに新しいですし、あなたの答えのハイパーリンクは、私があまりにも多くを認識していないVisual Basicでいくつかのコーディングに私を連れて行く。 – Dyhouse

+0

実際、VBAのようには見えません! – Dyhouse

+1

私はゆっくりとそこに着いています。以下のコードを使用して、開いている必要があるファイルを取得できます。文字列またはテキストを上書きすることはできますが、置換えを組み合わせて、ファイルには、 は「FSO =のCreateObject( "Scripting.FileSystemObjectオブジェクト")を設定してオブジェクト オブジェクト 設定Fileout = fso.CreateTextFile( "Cとして 薄暗いFileoutとしてFSO薄暗い...テキスト文字列の途中にスペースを削除しません: \ your_path \ vba.txt "、True、True) Fileout.Write"あなたの文字列はここにあります " Fileout.Close ' – Dyhouse

関連する問題