我正在尝试使用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
答案 0 :(得分:1)
您需要在单独的字符串中累积文本:
Dim strAll As String
。MsgBox
。strAll = strAll & strLine
MsgBox strAll
&
用于在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次。