VBA search paragraph and extract block of text

Hello, I am running an Access VBA subroutine that opens a word file, searches the file for some tokens, and extracts those texts until the closing token appears. I am new to word programming but not to excel or access. Anyone have any examples or solutions? Thanks
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Berkson WeinTech FreelancerCommented:
Is the start "token" the same as the end token?
Is there more than one set of start and end tokens?
I'll whip up some code, just let me know.  Won't take but a minute.
allenlo77Author Commented:
could be, doesnt have to be, your call!
Berkson WeinTech FreelancerCommented:
This will spit out the found text in a msgbox and assigns it to a variable.
I used ">>" as the starting token and ""<<" as the ending token.  If this isn't what you're using, change the
.Text = "\>\>*\<\<"
line to be the characters you're using.  You need to escape (\) special characters.
Also, at the end, where I trimmed of the tokens using left and right, you'll need to use the length of the starting token to replace the 2 and the total length of the start and end token to replace the 4.
This should do what you need.  You can loop if you need to find multiple occurrences.
Hope this helps.

Sub Find()
    Dim sFoundText As String
    With Selection.Find
        .Text = "\>\>*\<\<"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    sFoundText = Left(Right(Selection.Text, Len(Selection.Text) - 2), Len(Selection.Text) - 4)
    MsgBox sFoundText
End Sub

Open in new window


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Learn Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

allenlo77Author Commented:
weinberk, I am trying to extract a whole paragraph, wiill this work?

For example, the doc file has this

fdksljfkldjlkj >> hello my name is allen, blah blah

new paragraph blah blah blah

new paragraph blah blah. Okay we are done <<

And I'd like to extract everything between the '>>' token and '<<' token. I am looking at the code you posted and I am not even sure if it will work.
Berkson WeinTech FreelancerCommented:
Yes it works.  
I pasted your sample text into a word document then ran the code I provided.  A message box pops up with the text (although boxes appear where carriage returns are since the msg box doesn't support returns like that), and the entire text is available in the variable to do whatever you want with.
allenlo77Author Commented:
Ok it works, how do you handle white space between paragraphs? I have 4 paragraphs all separated by white space line.
Berkson WeinTech FreelancerCommented:
You just asked to return the text, which is why my code does.  
What is it that you want the code to do with the "white space?"  In your example text, it's just returns.  This might be another topic....
allenlo77Author Commented:
well because there is white space between the paragraphs, it gives me an "Invalid procedure call or argument", so I was wondering if you have a solution for that
allenlo77Author Commented:
nevermind, it works, the mouse cursor cannot be on the paragraph in between the tokens or else it doesn't work
Berkson WeinTech FreelancerCommented:
You're right.  Replace

and give it a whirl.  
Please don't forget to accept a solution.  I've worked hard to get a solution for you.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Word

From novice to tech pro — start learning today.