我正在寫一個Excel VBA程序來測量設備並更新各種讀數值。以下是對我的文件看起來像一個簡單的例子:用Excel VBA更新文本文件
[11904]
400: 0.4
500: 0.3
600: 3.3
[11905]
400: 1.0
500: 2.0
600: 3.0
正在使用中的括號中的數字設備的S/N,大數是測量和冒號後面的數字是設備的偏移值。我想要做的是寫一些能夠定位S/N,定位測量值,然後覆蓋偏移值的東西。 .ini文件具有很多S/N,它們都採用相同的測量,但具有不同的偏移量。下面是一些演示代碼,我從電子表格大師嘗試:
Private Sub CommandButton1_Click()
'PURPOSE: Modify Contents of a text file using Find/Replace
'SOURCE: www.TheSpreadsheetGuru.com
Dim TextFile As Integer
Dim FilePath As String
Dim FileContent As String
'File Path of Text File
FilePath = "C:\Temp\test.ini"
'Determine the next file number available for use by the FileOpen function
TextFile = FreeFile
'Open the text file in a Read State
Open FilePath For Input As TextFile
'Store file content inside a variable
FileContent = Input(LOF(TextFile), TextFile)
'Clost Text File
Close TextFile
'Find/Replace
FileContent = Replace(FileContent, "[HEADER TEST]", "[HEADER TEST]")
FileContent = Replace(FileContent, "Inserting new line", "Replacing line")
FileContent = Replace(FileContent, "Blah blah blah", "replaced this line too!")
'Determine the next file number available for use by the FileOpen function
TextFile = FreeFile
'Open the text file in a Write State
Open FilePath For Output As TextFile
'Write New Text data to file
Print #TextFile, FileContent
'Clost Text File
Close TextFile
End Sub
代碼工作,但它更新什麼,說:「插入新行」和「等等等等等等。」我希望只有在找到「[HEADER TEST]」後才能取代一次。「
我的問題是雙重的:
如何只改變,比方說,僅僅用一個S/N在文件中測量「400」?
此外,一旦我找到文本我想改變,我怎麼只寫偏移值而不是整個字符串?
如果我能夠成功找到一條線並只編輯一條線,我可以根據需要更換整個字符串。我無法更改.ini的格式,因爲我們使用讀取它的程序。
請參閱http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles – pnuts