vba读取文本文件中的所有文本?

时间:2014-11-28 09:46:32

标签: excel vba text-files

我正在尝试使用vba读取文本文件中的所有文本并将其显示在excel消息框中。我遇到的问题是,当这实际上有效时,它会在一个单独的消息框中显示每行文本,而不是我想把它全部放在一个?

有人可以告诉我我哪里出错了。感谢

If Range("L" & ActiveCell.Row).Value = "Performance" Then
Dim FilePath As String
Dim strLine As String
FilePath = "\\UKSH000-FILE06\Purchasing\New_Supplier_Set_Ups_&_Audits\ATTACHMENTS\" & Range("C" & ActiveCell.Row).Value & "\performance.txt"
Open FilePath For Input As #1
While EOF(1) = False
    'read the next line of data in the text file
    Line Input #1, strLine
    'print the data in the current row
    MsgBox strLine
    'increment the row counter
    i = i + 1
Wend
Close #1

End If

2 个答案:

答案 0 :(得分:1)

您需要在单独的字符串中累积文本:

  1. 在循环之前写Dim strAll As String
  2. MsgBox
  3. 替换为循环中的strAll = strAll & strLine
  4. 循环后,使用MsgBox strAll
  5. &用于在VBA中连接字符串。您可以使用空格分隔各个行:

    strAll = strAll & " " & strLine

    甚至是多行

    strAll = strAll & vbCrLf & strLine

    其中vbCrLf是一个VBA常量,表示"回车后跟换行"。你会在字符串的开头引入一个额外的空格/换行符,但我会留下你的答案!

答案 1 :(得分:1)

在循环中,你必须将所有行连接成一个字符串变量,并在结尾处输出结果。它基本上是这样的:

Dim Total As String
' ...
While EOF(1) = False
    'read the next line of data in the text file
    Line Input #1, strLine
    Total = Total & vbNewLine & strLine
    'increment the row counter
    i = i + 1
Wend

MsgBox Total

注意:虽然这个解决方案正在运行,但对于大型文件而言,它可能效率不高,因为看起来像代码中的串联,实际上意味着将现有内容复制到新的内存位置,然后插入新行的字符串。这是为每一行完成的。因此,对于1000行,非常大的总字符串被复制大约999次。