sgb062497
asked on
Word 97 Macro - Loop to end of doc
I want to write a macro to do an action on each line of a document.
In older Words, you could do it with
WHILE CMPBOOKMARKS (\sel, \EndofDoc))
....
WEND
How is one MEANT to do it in Word97.
I looked for a property such as
ActiveDocument.End
but that doesn't seem to exist.
(Whilst at it, how about end of section as well?)
In older Words, you could do it with
WHILE CMPBOOKMARKS (\sel, \EndofDoc))
....
WEND
How is one MEANT to do it in Word97.
I looked for a property such as
ActiveDocument.End
but that doesn't seem to exist.
(Whilst at it, how about end of section as well?)
ASKER
These look like useful words. It still doesn't explain anywhere in the HELP that I can find WHAT to do with them.
I want to do something similar to the VB code below. It won't run this example because the While comparison is invalid.
Selection.HomeKey Unit:=wdStory
Selection.TypeText Text:="> "
Selection.EndKey Unit:=wdLine
While Selection.Range <> ActiveDocument.wdEndOfDocu ment
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.TypeText Text:="> "
Selection.EndKey Unit:=wdLine
Wend
I've also tried using
While Not WdEndOfDocument
and that is valid but it never ends.
(If it matters, I'm in normal view rather than in Page layout view)
(The word help files are attrocious. You can't find out HOW to do anything, all you can do is find out something you already know about.)
=== sgb
I want to do something similar to the VB code below. It won't run this example because the While comparison is invalid.
Selection.HomeKey Unit:=wdStory
Selection.TypeText Text:="> "
Selection.EndKey Unit:=wdLine
While Selection.Range <> ActiveDocument.wdEndOfDocu
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.TypeText Text:="> "
Selection.EndKey Unit:=wdLine
Wend
I've also tried using
While Not WdEndOfDocument
and that is valid but it never ends.
(If it matters, I'm in normal view rather than in Page layout view)
(The word help files are attrocious. You can't find out HOW to do anything, all you can do is find out something you already know about.)
=== sgb
okay not quite sure if you want this for each pargraph or each line but for each paragraph you could do
for each aPara in ActiveDocument.Paragraphs
for each aPara in ActiveDocument.Paragraphs
ASKER
sorry about my last answer, submitted it and lost half of it!
Right now depends on if you want the text on a paragraph or a line basis, paragraphs are easier, but here should be the solutions or very close for both.
for paragraphs:
For Each apara In ActiveDocument.Paragraphs
ActiveDocument.Range(Start :=apara.Ra nge.End - 1, End:=apara.Range.End - 1).Select 'note the -1 so as not to move past the para mark
Selection.TypeText ">"
Next apara
Now for Lines its a bit trickier but should be something like this
assuming you are at the line you want to start inserting from
While Selection.End < (ActiveDocument.StoryRange s(wdMainTe xtStory).E nd - 1) ' this will only do the body text
Selection.EndKey Unit:=wdLine
Selection.TypeText ">"
Selection.Move Unit:=wdCharacter, Count:=1
Wend
Selection.TypeText ">"
Note if you have tables then you had better not try to insert any text on the end of row marker. This can be ascertained by using :
if Selection.Information (wdAtEndOfRowMarker) = true then 'this will mean it is at end of a table row.
Cheers Sparko
Right now depends on if you want the text on a paragraph or a line basis, paragraphs are easier, but here should be the solutions or very close for both.
for paragraphs:
For Each apara In ActiveDocument.Paragraphs
ActiveDocument.Range(Start
Selection.TypeText ">"
Next apara
Now for Lines its a bit trickier but should be something like this
assuming you are at the line you want to start inserting from
While Selection.End < (ActiveDocument.StoryRange
Selection.EndKey Unit:=wdLine
Selection.TypeText ">"
Selection.Move Unit:=wdCharacter, Count:=1
Wend
Selection.TypeText ">"
Note if you have tables then you had better not try to insert any text on the end of row marker. This can be ascertained by using :
if Selection.Information (wdAtEndOfRowMarker) = true then 'this will mean it is at end of a table row.
Cheers Sparko
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
The words you are looking for are....
WdEndOfDocument
and
WdEndOfSection
Hope this helps
Frazer