簡體   English   中英

如何使用Excel VBA編輯文本文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM