2014-09-26 64 views
0

我有一個excel宏,我們的財務團隊將使用它將excel文件轉換爲特定格式(逗號分隔txt),以便他們可以將數據導入到我們的系統。這個宏很好,除了一個例外。最終文件需要有5個字段:賬號,卡號,日期,交易代碼,金額。使用VBA在一行文本文件中計數逗號

只有帳號或卡號是強制性的 - 你不需要兩個。問題在於,當將Excel文件保存爲以逗號分隔的文件(手動或使用宏)並且沒有帳號(即所有記錄僅使用卡號)時,第一列爲空(文件沒有標題),然後用逗號分隔的文件只保存4個字段,從卡號開始 - 它應該以空白字段開始,即用 直接逗號 - 我們的系統現在拒絕這些文件。

這樣可以節省這樣的:

1944210004744845,20092014,931,2191.33 

應該保存這樣的:

,1944210004744845,20092014,931,2191.33 

只要是在某個地方在第一列的一切一個帳號是好的。

我不希望我們的開發人員進行更改,因此我在考慮在保存txt文件之後在宏的末尾添加一段文件,該文件將計算第一行txt中的逗號數文件,如果只有3個逗號,它必須在文件中的每個記錄之前添加一個逗號。

有人可能會幫助這一點,因爲我不知道該怎麼做。或者也許有更好的辦法?在串

回答

1

與一個名爲位於C 'myfile.txt的' 文件開始:\ TEMP目錄如下:

enter image description here

運行這段代碼:

Sub readTXT() 
    Dim FilePath As String 
    Dim strFirstLine As String 

    FilePath = "C:\temp\myFile.txt" 

    'Load txt file into array 
    Open FilePath For Input As #1 
    dataArray = Split(Input$(LOF(1), #1), vbLf) 
    Close #1 

    'Test first line if it has three commas 
    If Len(dataArray(0)) - Len(Replace(dataArray(0), ",", "")) = 3 Then 
     'Add comma to start of strings 
     For i = LBound(dataArray) To UBound(dataArray) 
      dataArray(i) = "," & dataArray(i) 
     Next i 

     'Creat new file 
     FilePath = Left(FilePath, Len(FilePath) - 4) & "_Comma.txt" 
     Open FilePath For Output As #2 

     'Write to new file modified data 
     For Each Line In dataArray 
      Print #2, Line 
     Next Line 

     Close #2 
    End If 
End Sub 

結果是一個新的文件名爲myFile_Comma.txt看起來像這樣:

enter image description here


您不必保存到一個新的文件,但如果事情出錯會讓回頭更容易。

+0

This works great除了文本文件中的每一行現在都以問號結尾 - 我怎樣才能從整個文件中刪除它們? – user2725402 2014-09-28 14:54:37

+0

一種方式,在「Print」行之前加上這一行:'Line = Left(Line,Len(Line) - 1)'。它只是刪除最後一個字符。如果它不總是'?'然後像這樣測試它:'如果Right(Line,1)=「?」然後Line = Left(Line,Len(Line) - 1)' – 2014-09-28 15:37:11

0

計數字符: Count specific character occurrences in string

迭代通過行簡單的例子整個文件行:

dim c as Range 
Set c = Range("A1") 
do until IsEmpty(c.Value) 
    if countTheCharacters(c.Value,",") < 3 then 
    c.Value = "," & c.Value 
    end if 
    set c = c.Offset(1,0) 
loop 
+0

我該如何在文本文件中做這件事,即我的範圍根本不會在我的工作簿中,如果第一行只包含3個逗號,那麼這將是一個需要打開和編輯的txt文件 – user2725402 2014-09-26 07:12:38