【发布时间】:2013-12-25 09:14:03
【问题描述】:
我需要从一个文本文件中选择一个特定的数据。但是这个文本文件的单行数据超过了 1024 个字符。
例如:我需要字符串 text1 和 text 2 之间的数据。我的代码只取大行中text1 和text2 之间的第一个数据,然后移至下一行。但是之前的大行有多个 text1 & text2 实例。我无法获得这些数据。请帮忙。在我的代码下面找到:
Sub Macro1()
Dim dat As String
Dim fn As String
fn = "C:\Users\SAMUEL\Desktop\123\Source1.TXT" '<---- change here
With CreateObject("Scripting.FileSystemObject").OpenTextFile(fn)
Do While Not .AtEndOfStream
dat = .Readline
If InStr(1, dat, "text1", vbTextCompare) > 0 Then
x = InStr(dat, "text1") + 8
y = InStr(dat, "text2")
Z = y - x
MsgBox Mid(dat, x, Z)
End If
Loop
.Close
End With
End Sub
我想选择 Text1 和 Text2 之间的数据到特定的单元格。 数据看起来像“这是一个 Text1 很棒的 Text2 网站。我喜欢这个 Text1 网站 Text2。” 这是我从网站复制的大量数据。当我保存在文本文件中时,此 Web 数据的一行超过 4000 个字符。所以文本文件中的行以 1024 个字符结束,数据移动到下一行,变成 3 行。但是我的宏在字符串“dat”中取第一个 1024 并移动到网络数据的第二行,这意味着它会跳过 1024 个字符到 4000 个字符之后的所有数据。我想要的存在于 Text1 和 Text2 之间的数据可以是整个 4000 个字符中的任何位置,但它将采用相同的模式。它永远不会像 Text1...Text1...Text2..
【问题讨论】:
-
您想对找到的匹配项做什么、替换它们、列出它们的位置等?
-
您能确定 text1 和 text2 将始终包含在一行中吗?或者它们可能分布在不止一条线上?
-
另外,如果你有一个“text1 ... text1 ... text2”的序列,你想从第一个text1返回还是从第二个text1返回。
标签: excel vba createobject