Re: How to put lines with certain text (from a file) in an array
- From: "Rick Rothstein" <rick.newsNO.SPAM@xxxxxxxxxxxxxxxxxx>
- Date: Mon, 9 Mar 2009 16:13:00 -0400
The following code will output all the lines containing the text "layers_" **anywhere** within them. Notice that you can't pick and choose a subset of all the "layer_" lines; that is, you can't use this method to only output "layer_1" and "layer_2" skipping over "layer_3"... the search text that gets used in the Filter function works like that in the InStr function. Oh, and change the file names for the input and output files.
Sub ReadProcessOutput()
Dim FileNum As Long
Dim TotalFile As String
Dim LinesOut As String
Dim LinesIn() As String
FileNum = FreeFile
Open "d:\temp\Test.txt" For Binary As #FileNum
TotalFile = Space(LOF(FileNum))
Get #FileNum, , TotalFile
Close #FileNum
LinesIn = Split(TotalFile, vbCrLf)
LinesOut = Join(Filter(LinesIn, "layer_", True, vbTextCompare), vbCrLf)
FileNum = FreeFile
Open "d:\temp\OutTest.txt" For Output As #FileNum
Print #FileNum, LinesOut
Close #FileNum
End Sub
--
Rick (MVP - Excel)
"RB Smissaert" <bartsmissaert@xxxxxxxxxxxxxxxx> wrote in message news:eMuPR$OoJHA.1292@xxxxxxxxxxxxxxxxxxxxxxx
Function OpenTextFileToString(strFile As String) As String
Dim hFile As Long
On Error GoTo ERROROUT
hFile = FreeFile
Open strFile For Binary As #hFile
OpenTextFileToString = Space(LOF(hFile))
Get hFile, , OpenTextFileToString
Close #hFile
Exit Function
ERROROUT:
If hFile > 0 Then
Close #hFile
End If
End Function
Sub Test()
Dim i As Long
Dim n As Long
Dim str As String
Dim arr1
Dim arr2() As String
str = OpenTextFileToString("C:\testfile.txt")
arr1 = Split(str, vbCrLf)
ReDim arr2(0 To UBound(arr1)) As String
For i = 0 To UBound(arr1)
If InStr(1, arr1(i), "layer_", vbBinaryCompare) > 0 Then
arr2(n) = arr1(i)
n = n + 1
End If
Next i
ReDim Preserve arr2(0 To n - 1) As String
'to check we got it right
For i = 0 To UBound(arr2)
MsgBox arr2(i), , i
Next i
End Sub
RBS
"Varun" <Varun@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message news:240EE13E-48BD-4B48-833C-586C05461691@xxxxxxxxxxxxxxxxGuys,
I'd like to open and parse a file such that when I parse, only lines with
certain text in them get included into my array. How can I accomplish this?
For example, let say that file contents are as follows:
text in line 1
text in line 2
layer_1
layer_2
layer_3
I'd like to save the lines with layer_1, layer_2, and layer_3 in my array
named line.
Here's what I have so far - what should I do next?
Sub geomsasciiparse()
Dim Buf() As String
Dim logical_layer As Variant
Dim line() As String
Dim objFSO As Object
Dim objGeomsAsciiFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objGeomsAsciiFile = objFSO.OpenTextFile(MentDesContPath & "\geoms_ascii")
strBuffer = objGeomsAsciiFile.Readline
Do While Not objGeomsAsciiFile.AtEndOfStream
If InStr(strBuffer, "layer") = 1 Then
End If
Thanks for help.
.
- Follow-Ups:
- Re: How to put lines with certain text (from a file) in an array
- From: RB Smissaert
- Re: How to put lines with certain text (from a file) in an array
- From: Peter T
- Re: How to put lines with certain text (from a file) in an array
- References:
- How to put lines with certain text (from a file) in an array
- From: Varun
- Re: How to put lines with certain text (from a file) in an array
- From: RB Smissaert
- How to put lines with certain text (from a file) in an array
- Prev by Date: Re: names of variables in array
- Next by Date: How can I format a cell to automatically assign a new number?
- Previous by thread: Re: How to put lines with certain text (from a file) in an array
- Next by thread: Re: How to put lines with certain text (from a file) in an array
- Index(es):
Relevant Pages
|