Search code examples
vbams-wordword-field

What is the difference between fields and formfields?


in word pressing alt+F9 can display "FieldCodes" enter image description here

How can I access this programmatically using vba and pair them with the formfields?

You can access the field code by ? Application.ActiveDocument.Fields(1).Code

And you can access the form fields by Application.ActiveDocument.FormFields(1)

But is there any guarantee's about the indices matching? Can a formfield ever not be a Field? can a Field ever not be a formfield?

Will changing these away from FORMTEXT have any unintended side effects, or are these basically nice and friendly linking id's / display values allowing you to view them and swap between them with ease?

Edit: I've come up with the following to get the fields Code. I'm still unsure if it's a good idea to edit them or not, or what they represent.

    Application.ActiveDocument.FormFields(1).Range.Fields(1).Code

Solution

  • Fields are general objects, they can be :

    • document's properties (built-in or custom),
    • mailing / mergemail,
    • calculation,
    • form fields,
    • ...

    A form fields is an field for inputs.

    Take a look at the links in the tag info of , there is a lot of interesting things!

    And you can access them by their own collections (press F2 in VBE to use Object Browser).

    For Fields the general collection is in Application.ActiveDocument.Fields,
    but you can find them in a lot of objects (check with Object Browser!).
    Take a look at that answer to have an idea of the other objects in which you can find it! ;)


    To my knowledge, there is no possibility nest something inside a FormField,
    like you can do in a Field.

    I'm not sure to understand that question :

    "Will changing these away from FORMTEXT have any unintended side effects, 
    or are these basically nice and friendly linking id's / display values
    allowing you to view them and swap between them with ease?"
    

    If you want to create a Form that users can fill, you'll need to stick with FormFields.

    If you want to display values at specific places in a document, Fields is the way to go.
    I'd even suggest Custom Document Properties for a general use, and MergeMail for Mailings. ;)