問候,我希望能夠幫助確定如何將讀取的每一行文本文件作爲字符串存儲到VBA程序中。我想修改其中一個字符串,然後將它們全部放回到一起,但不知道如何通過文本文件讀取並以智能方式將每行存儲爲單獨的變量。感謝您的任何幫助,您可以提供!試圖在VBA中存儲文本文件行
回答
查找到一個FileSystemObject(參考:1,2,3)
你必須去到菜單和包括Microsoft Scripting Runtime
並創建一個全局變量Global fso as New FileSystemObject
。現在,您的代碼中的任何地方都可以執行諸如fso.OpenTextFile()
之類的操作,並返回TextStream
。每個文本流有方法魔神ReadLine()
,ReadAll()
,SkipLine()
,WriteLine()
等..
下面是一個簡單的示例代碼。
Sub TEST()
Dim ts As TextStream
Set ts = fso.OpenTextFile("text_file.txt", ForReading, False)
Dim s As String
s = ts.ReadAll()
End Sub
如果你不希望添加引用,你可以隨便去直VBA代碼。
就拿以下文件wordlist.txt:
realize
empty
theorize
line
socialize
here
analyze
下面的代碼使用兩種方法來爲你做描述(一個比其他普通):
Option Explicit
Sub main()
Dim sFileName As String
Dim sMergedLineArray() As String
Dim sTextToFind As String
Dim sReplacementText As String
Dim sOutputFile As String
Const MY_DELIMITER = "|"
sFileName = "C:\deleteme\wordlist.txt"
sMergedLineArray = ReadFileIntoArray(sFileName)
sTextToFind = "ze"
sReplacementText = "se"
'Loop through each value in the array and make a change if you need to
Dim x As Integer
For x = 0 To UBound(sMergedLineArray)
If InStr(1, sMergedLineArray(x), sTextToFind, vbTextCompare) > 0 Then
sMergedLineArray(x) = Replace(sMergedLineArray(x), sTextToFind, sReplacementText, 1, -1, vbTextCompare)
End If
Next x
sOutputFile = "C:\deleteme\UK_Version.txt"
If Not SpitFileOut(sOutputFile, sMergedLineArray) Then
MsgBox "It didn't work :("
End If
'OR...put it all together, make a mass change and split it back out (this seems unlikely, but throwing it in there anyway)
sTextToFind = "se"
sReplacementText = "ze"
Dim sBigString As String
Dim sNewArray As Variant
sBigString = Join(sMergedLineArray, MY_DELIMITER)
sBigString = Replace(sBigString, sTextToFind, sReplacementText, 1, -1, vbTextCompare)
sNewArray = Split(sBigString, MY_DELIMITER, -1, vbTextCompare)
sOutputFile = "C:\deleteme\American_Version.txt"
If Not SpitFileOut(sOutputFile, sNewArray) Then
MsgBox "It didn't work"
End If
MsgBox "Finished!"
End Sub
Function ReadFileIntoArray(sFileName As String) As String()
Dim sText As String
Dim sLocalArray() As String
Dim iFileNum As Integer
Dim iLineCount As Integer
iFileNum = FreeFile
Open sFileName For Input As #iFileNum
Do Until EOF(iFileNum)
Input #iFileNum, sText
ReDim Preserve sLocalArray(iLineCount)
sLocalArray(iLineCount) = sText
iLineCount = iLineCount + 1
Loop
Close #iFileNum
ReadFileIntoArray = sLocalArray
End Function
Function SpitFileOut(sFileName As String, sMyArray As Variant) As Boolean
Dim iFileNum As Integer
Dim iCounter As Integer
SpitFileOut = False
iFileNum = FreeFile
Open sFileName For Output As #iFileNum
For iCounter = 0 To UBound(sMyArray)
Print #iFileNum, sMyArray(iCounter)
Next
Close #iFileNum
SpitFileOut = True
End Function
如果你運行主分區,你將得到兩個文件:
- UK_Version.txt:這是第一方法
- American_Version.txt的結果:這是第二
結果有VBA,年輕學徒的課1;吸收它,學習並更改您的登錄名:P
感謝您的幫助!非常有用的課 – dontknowvba 2011-04-27 19:49:20
np。如果適用,請將plz標記爲答案。 – ray 2011-04-27 19:54:21
- 1. 在文本文件中存儲位圖
- 2. 試圖運行存儲在文件中幾個AWK命令
- 3. 在ipod中存儲文本文件
- 4. 在Visual Studio中存儲文本文件
- 5. 試圖從文本文件數據存儲到對象
- 6. VBA Excel:讀取文件,並在列中儲存圖像
- 7. 存儲從文本文件
- 8. 試圖讀取res文件夾中存儲的PDF文件android
- 9. 試圖檢查內部存儲器中是否存在文件
- 10. 試圖瞭解解析文件存儲
- 11. 將文本/圖像文件存儲在mysql數據庫中
- 12. 如何使用Graphstream將圖形存儲在文本文件中
- 13. 在一個文本文件中存儲youtube頻道的視圖
- 14. 用存儲在文本文件中的信息更新多行
- 15. 如何在變量中存儲文本文件的特定行
- 16. 如何在JAVA列表中存儲第一行文本文件
- 17. 逐行讀取文本文件並存儲在類中?
- 18. 存儲爲文本數與VBA
- 19. 在java中存儲文本行數組
- 20. 嘗試存儲答案在一個文本文件
- 21. 文本文件的集中存儲
- 22. 從文本文件中存儲輸入
- 23. 在IIS上存儲文本文件
- 24. 保存文本文件UTF-8 VBA
- 25. 在mongodb中存儲文本?
- 26. 使用存儲在資產文件夾中的文本文件
- 27. 試圖逐行讀取文本文件。但行分裂成兩個,並獲得存儲在下一行
- 28. 嘗試使用VBA在Excel中存儲文本文件中的唯一字符串
- 29. 將文本文件中的值存儲到地圖中
- 30. 運行本地存儲的Docker文件
建議您先學習VBA,然後返回任何您遇到的編碼問題。您也可以嘗試在搜索引擎中輸入「讀取文本文件VBA」 – 2011-04-26 23:57:32