Creating a visible field with a hidden component?

M

ML

I need to create a field that will be inserted via VBA code. This will be
made up of nested fields. The outer field will use a Quote field with a
visible text element that will show in the document. Along with this is a
nested field which contains tags that I will parse for with another macro.
The issue is I need to make the second nested field not visible and also
easily parsable in code. I'm thinking of storing a delimited string in this
field to contain the various elements need later.

The only way I can think to do this is using the SEQ field with the \h. Is
this the only/best approach?

Here is what I want or similar:

{ QUOTE (CAUKEO) { SEQ AA-BB-CCCC \h } }

So later on I want to parse out the SEQ field associated with the QUOTE and
based on what it contains (i.e. does it include AA then..) do something in
the macro.

Any thoughts or insight on this approach?
 
C

Charles Kenyon

The easiest way to insert nested fields is to create them manually rather
than through code and then save them as AutoText. To insert the field using
code, you then insert the AutoText entry.
--
Charles Kenyon

Word New User FAQ & Web Directory: http://addbalance.com/word

Intermediate User's Guide to Microsoft Word (supplemented version of
Microsoft's Legal Users' Guide) http://addbalance.com/usersguide


--------- --------- --------- --------- --------- ---------
This message is posted to a newsgroup. Please post replies
and questions to the newsgroup so that others can learn
from my ignorance and your wisdom.
 
M

ML

Well considering the SEQ part needs to be dynamic the autotext approach is
not an option.
 
C

Charles Kenyon

Use a DocVariable for the SEQ label and a DocVariable field to incorporate
it in the SEQ field. For that matter, why not simply use document variables
to hold what you are parsing for unless you need it in a particular place in
the document body?
--
Charles Kenyon

Word New User FAQ & Web Directory: http://addbalance.com/word

Intermediate User's Guide to Microsoft Word (supplemented version of
Microsoft's Legal Users' Guide) http://addbalance.com/usersguide


--------- --------- --------- --------- --------- ---------
This message is posted to a newsgroup. Please post replies
and questions to the newsgroup so that others can learn
from my ignorance and your wisdom.
 
M

ML

The user will be inserting these on specific pages. When I parse for the
field I then need to determine what page it is on. So there is no way to
use a DocVariable at time of insertion because the page an item is on may
change as content is added to the document.
Basically I am creating a page level dynamic tag which is used to insert
classification markers and related information used to tag content of a
paragraph. So a given page and multiple pages may contain multiple markers
that re the same or different. When the page is parsed I then generate a
page specific docvarible, which is in turn used to set a page specific
header/footer element.
 
D

Dave Lett

Hi,

So, you want to know the page number a field is on? Is that it? You can use
the .Information property for that without inserting a nested field. See the
following for an example:

For Each oFld In ActiveDocument.Fields
Debug.Print oFld.Result.Information(wdActiveEndPageNumber)
Next oFld

HTH,
Dave
 
P

Peter Jamieson

First, if you want a hidden component, there are various fields that do not
display a result that you could adapt. The simplest is probably SET, e.g.

{ SET X info1 info2 info3 }

You could also try { ADDIN } or { PRIVATE }, assuming there is no reason to
believe they are being used for any other purpose.

Given the type of thing you're attempting you might find the last part of

http://gregmaxey.mvps.org/Conditional_Headers_Footers.htm

useful.

Peter Jamieson
 
M

ML

Yes part of it is knowing what page it is on, the other part is putting it
on the page with the embedded info that I need to parse out.
 
M

ML

Thanks.

Already have used conditional headers and footers. It was too simplistic
for our needs and thus why I am trying to extend the concept. We have too
many possibilities to code them all using the conditional method. As is
with conditional we ended up with about 10-12 combinations for 2 separate
fields but now we have even more, plus we also need to handle freeform text
values that a user may enter into our tags.
 
P

Peter Jamieson

Understood - no further suggestions except that if you need to keep stuff
out of the way of the user you could store stuff in document variables and
limit your use of fields to storing references to those variables. Probably
lots of pain with no gain though.

Peter Jamieson
 
M

ML

Yes, the biggest issue with variable is they are not page specific so only
way I found to make a page specific variable is to embed a field on a page.
Not the best approach but only one I could find.
If anyone has other ideas I'd love to hear them.
 
D

Dave Lett

Hi,

You mentioned that you need to "need to determine what page it is on." I
offered a method that can do this.

What I'm failing to understand is why you must put the page number on the
page with the field. You're parsing the field. The page number doesn't have
to be part of that field if you only need to use/return that page number to
your routine.

Dave
 
M

ML

I don't need to put the page number on the page with field, I need to know
the page a field is on and also what the field contains.
The issue however is the fields are dynamically generated, as there are many
possibilities plus also user entered data.

The user will use a form that they select settings on or enter user text.
This in turn will place a field on the page at the cursor position. This is
used to flag/mark a paragraph with specific data to indicate the security
level applied to the page and shown in the header/footer.

To do this I need to parse for all the tags, figure out what page they are
on and then generate a page specific variable that the header/footer can use
to display the proper message.
 
D

Dave Lett

You need to parse all fields.
You need to know the page number that each field is on.
Therefore, you can use the .Information property, as shown in the following
example.

Dim oFld as Field
Dim lPgNum As Long
For Each oFld In ActiveDocument.Fields
'parse your field
lPgNum = oFld.Result.Information(wdActiveEndPageNumber)
'now you have the field parsed and
'and the page number of each field
'generate a page specific variable
Next oFld


Dave
 

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