Ascertaining whether a search in VBA code returns a string or a reserved word

P

Paul Martin

Hi all

I am writing some code that searches a VBA project for (in this case)
APIs and I am using "Declare" as the search criteria. If I find
"Declare", is there some way (perhaps an API) that can ascertain
whether the use of "Declare" is a string or a reserved word?

Now, I realise that if it is an API, it would be followed by "Function"
or "Sub". I have other search criteria that I also need to look for
(such as "Shell" and ".RegisterDatabase").

Any suggestions appreciated. Thanks in advance.

Paul Martin
Melbourne, Australia
 
P

pietlinden

A line is made up of words, a combination of reserved words, variable
names, literals etc.
In order to determine if a word is reserved, you'd have to compare each
one to a dictionary, as in "If it's in the dictionary, it's reserved."

If you read an entire line of code, you could use Split to break the
line into an array of individual words (split on the space) and then
compare them to the dictionary.
 
D

Dave Peterson

Can you look for it at the beginning of the line--after you trim any leading
spaces (and ignoring Public/Private key words)?

And I think you'd have to make sure a space character followed it.

And you may have to count quotes to see if you're in a string.

Dim myStr as string
mystr = "Do you have anything to" & _
" declare"
 
P

Paul Martin

Thanks all for your responses.

I'm using the Find method of CodeModule using the WholeWord argument as
True, so there's no problem capturing the various search criteria, and
this is very efficient. I was wondering if there's some way that VBA
(or an API) would recognise the use of the word as a reserved word or
otherwise.

Based on the responses I've received, the answer appears to be no. All
the solutions are based on capturing a code line as a string.
 
D

Dave Peterson

I can't imagine that an API would care about the reserved words in Excel's VBA,
or MSWord's VBA, or PPT's VBA or AutoCad's VBA or any of the other flavors of
VBA.

It wouldn't make sense to me--but I've been wrong lots of time.
 
N

NickHK

Paul,
You could check if the single line had a "Declare " and a " Lib " (note the
spaces) and compare text sensitive. Whilst not 100% conclusive, it would be
a pretty strange string to have both exactly like that.
Depending what you're after, maybe check it's not a comment first.

NickHK

Paul Martin said:
Thanks all for your responses.

I'm using the Find method of CodeModule using the WholeWord argument as
True, so there's no problem capturing the various search criteria, and
this is very efficient. I was wondering if there's some way that VBA
(or an API) would recognise the use of the word as a reserved word or
otherwise.

Based on the responses I've received, the answer appears to be no. All
the solutions are based on capturing a code line as a string.
 

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