Code to read file in reverse fast line by line

C

ChristopherL

Hello,

Does anyone have code that will show me how to read a file in
reverse from the end of the file towards the beginning of the file. I
have to find out if an exact phrase such as "the morning brings
another day exists in a file. I am planning on using "Instr" to do
this.

I do not want to use FileSearch's "keyword" search capability
because blanks in the phrase causes too many matches. I.E.: FileSearch
will say a file has the phrase if the file has the words all over the
place in a large file!

Thank you,
Chris
 
D

Don Guillett

A bit more clarification, especially "file in reverse"
I might assume that you mean you want to look in the last sheet, by
location, first.?????
 
D

Don Guillett

If so, try this

Sub lookinreverse1()
what = "the morning brings another day"

num = Sheets.Count
'MsgBox num
On Error Resume Next
For i = num To 1 Step -1
With Sheets(i)
ma = .Cells.Find(what, LookIn:=xlValues, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext).Address
If ma > 0 Then
MsgBox Sheets(i).Name & ma
Exit Sub
End If
End With
Next i
End Sub
 
J

Joel

Do you means reverse by Row or Char.acters.

For Rows add numbers to an auxilary column and then sort decreasing on th
eauxilary column. Put 1 in row 1 and 2 in row 2. Then highlight both cells
and pull down the little square box in the bottom right corner of the
highlighted cells to number al the rows. Then sort on this new row




To read a file backward by characters use ReadAll to read the entire file
into a variable. then pull the characters out of the string backward like
below.



Const ReadFile = "c:\temp\event.txt"

Const ForReading = 1, ForWriting = 2, _
ForAppending = 3

Set fs = CreateObject("Scripting.FileSystemObject")
Set fin = fs.OpenTextFile(ReadFile, _
ForReading, TristateFalse)
Data = fin.readall

for i = len(Data) to 1 step -1
MyChar = mid(Data,i,1)
next i
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top