[英]How to edit a text file using excel vba
我需要編輯一個文本文件,即使用宏添加和更新數據。 我有一個包含數千條記錄的文本文件,還有一個單獨的Excel工作表,該工作表提供了文本文件中數據的映射。 例如,文本文件中的記錄如下所示:
ABCDNew Delhi India
對此的映射Excel工作表如下:
Name 4
City 10
Country 10
這意味着記錄中的前四個字符指定名稱,下十個輸入城市名稱,下十個輸入特定人的國家,依此類推。 現在,我必須編輯特定名稱的記錄(一個或兩個字段)並將其保存在同一文件中。 另外,我已經以上述指定的格式添加了一條新記錄,然后保存了文件。
Excel工作表僅提供文本文件中字段的映射。 它只告訴字段長度。 正如您在我的問題中看到的那樣,文本是連續的,沒有任何分隔符。 因此,Excel工作表用於識別文本文件中的變量字段。 樣本記錄如下:
ABCDDelhiIndia1100019876543210
映射是:
名稱4城市5國家5密碼6號碼10
文件中所有記錄的映射都是相同的。 它只是提供了一種如何從文件中讀取記錄的方法。
關於如何以最簡單的方式執行此操作的任何想法?
您可以在名稱,城市和國家/地區之間使用一些分隔符,例如:ABCD:New Delhi:India。 使用分隔符可以讓您分隔名稱,城市和國家。 現在,您可以輕松確定每個字符串的長度。 現在,根據您的要求,您可以輕松地編輯數據並寫入文件。 您可以參考以下代碼以供參考:文本文件:exceltest abcd:new delhi:india test:NY:USA
宏代碼:
Sub readTextFile()
Dim oFSO As New FileSystemObject
Dim oFS
Dim objFSO As New FileSystemObject
Set myTemp = objFSO.CreateTextFile("C:\Users\Rohit\Desktop\exceltestTemp.txt", True)
Set oFS = oFSO.OpenTextFile("C:\Users\Rohit\Desktop\exceltest.txt")
Do Until oFS.AtEndOfStream
stext = oFS.ReadLine
Dim testarray() As String
testarray = Split(stext, ":")
Dim i As Integer
i = Len(testarray(0)) 'determine length of each String, here as a sample only length of one string is determined
Cells(4, "a").Value = i 'writing a length to excel sheet, you can write to any location
Cells(1, "a").Value = testarray(0) 'writing contents to excel sheet
Cells(2, "a").Value = testarray(1) 'writing contents to excel sheet
Cells(3, "a").Value = testarray(2) 'writing contents to excel sheet
'Search for the Name
If testarray(0) = "test" Then
testarray(1) = "Mumbai"
End If
myTemp.WriteLine testarray(0) & ":" & testarray(1) & ":" & testarray(2) 'writing to a temp text file
Loop
End Sub
現在,根據您的要求,您可以搜索名稱並編輯數據並寫入文件。 然后,您可以刪除原始文件並將臨時文件另存為原始文件。
PS:在Excel 2007上嘗試過。您需要添加參考“ Microsoft Scripting Runtime”。
您所描述的是固定寬度數據。 直接使用導入對話框中的“固定寬度”選項將數據作為excel中的文本文件導入。 然后,您可以為每個字段選擇開始和結束。 棘手的部分是將其導出為相同格式。 我知道實現此目標的唯一方法是通過VBA。 似乎這將是直接簡單的例程,但是可能已經被編寫了很多遍了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.