2017-07-11 173 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答案將爲您如何將特定數據寫入文件提供良好開端。結合上述功能,你應該很好去。

月2日更新

從字符串中刪除前導和/或尾隨空格,您可以使用trim功能如上所述。這裏是examplesdocumentation

+0

刪除行的需要,你可以給這個代碼可能看起來像什麼樣子的例子嗎?我對VBA相當陌生,在答案中的超鏈接讓我對Visual Basic進行了一些編碼,但我並沒有真正意識到這一點。 – Dyhouse

+0

其實它看起來不像VBA! – Dyhouse

+1

我慢慢到了那裏,使用下面的代碼,我現在可以得到我需要打開的文件,我可以用任何字符串或文本覆蓋,但我將如何結合替換,以便它只刪除文本結尾處的空格該文件,而不是刪除空格的文本字符串中間... 「FSO灰暗對象 FSO設置=的CreateObject( 「Scripting.FileSystemObject的」) 昏暗FILEOUT作爲對象 設置FILEOUT = fso.CreateTextFile(「C: \ your_path \ vba.txt「,True,True) Fileout.Write」your string goes here「 Fileout.Close' – Dyhouse