【问题标题】:In VBA, how do I amend a specific line of a .txt file?在 VBA 中,如何修改 .txt 文件的特定行?
【发布时间】:2020-05-15 20:54:44
【问题描述】:

我想使用 VBA 修改 .txt 文件的特定行(例如:第 5 行)。

我怎么能这样做?

【问题讨论】:

  • 请阅读这篇关于使用 StackOverflow 的文章。遵循此处的指南将获得更好的答案和更少的挫败感:stackoverflow.com/help/how-to-ask
  • 首先将问题分解为多个部分。逐一研究每一部分。把它们放在一起,然后在你有代码并且卡住的时候回来。也许如果你尝试一下,你就会在卡住之前弄清楚!
  • 我已经把它分解了。我想要的只是代码行,我可以在其中修改文本文件的给定行号(比如第 N 行)。
  • 你需要将.txt文件逐行拆分成字符串数组然后修改,这不止是一行预兆,你需要获取文本然后更改它然后保存。 ..

标签: arrays excel vba text


【解决方案1】:

下面是一些VBA代码,它以一个块的形式读入一个文本文件,将它分成单独的行成一个数组,替换第五行的文本(数组是从0开始的,所以元素是0、1、 2, 3, 4, 5,.....),然后将它们重新组合在一起以将其写入文本文件。然后它最终删除原始文件,并重命名输出文件。

Sub sAlterFile()
    Dim strInFile As String
    Dim strOutFile As String
    Dim intInFile As Integer
    Dim intOutFile As Integer
    Dim strInput As String
    Dim aData() As String
    intInFile = FreeFile
    strInFile = "C:\test\sample.txt"
    Open strInFile For Input As intInFile
    strInput = Input(LOF(intInFile), intInFile)
    aData() = Split(strInput, vbCrLf)
    aData(LBound(aData) + 4) = "new"
    intOutFile = FreeFile
    strOutFile = "C:\test\amended.txt"
    Open strOutFile For Output As intOutFile
    Print #intOutFile, Join(aData(), vbCrLf)
    Close #intInFile
    Close #intOutFile
    Kill strInFile
    Name strOutFile As strInFile
End Sub

问候,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多