Userinitials not updating automatically

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I have a field which has USERINITIALS but which does not update unless I
press F9. According to the Word help it should update automatically when the
file is opened. So am I doing something wrong?

Thanks!
 
Simply opening an existing document will not normally cause the field to
update (creating a new document with such a field will create the document
with the current information). If you want to force an update to the fields
in the document every time you open the document, then in its template,
create an autoopen macro (or add to any existing autoopen macro) with the
update code from http://www.gmayor.com/installing_macro.htm

--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP

My web site www.gmayor.com

<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
 
Thank you for your reply.

This is a quote from the Help file which is not quite true:

Control how fields are updated
By default, Word automatically updates fields when a document is opened.
That way, information stays up to date.

My file is being created by another program which copies files rather than
creates new ones from templates. What I would like to do is an autoopen macro
which first checks the value and then decides with an if statement whether to
update or not. But how do I refer to a specific field in the macro? In Excel
it's easy because everything is in a cell with its own number, but how do you
point to a specific field in Word?
 
Hi Deejay,

e.g.

Sub Test459()
' update all fields of type wdFieldUserInitials
Dim oFld As Field
For Each oFld In ActiveDocument.Fields
If oFld.Type = wdFieldUserInitials Then
oFld.Update
End If
Next
End Sub

Sub Test459b()
' update second field of type wdFieldUserInitials
Dim oFld As Field ' a field
Dim cFld As Collection ' a collection
Set cFld = New Collection
For Each oFld In ActiveDocument.Fields
If oFld.Type = wdFieldUserInitials Then
' add only fields of type wdFieldUserInitials
' to the collection
cFld.Add oFld
End If
Next
cFld(2).Update
End Sub

Still better would be to enclose the fields in question
in bookmarks at the time they are created.

Maybe I'm missing something.

--
Greetings from Bavaria, Germany

Helmut Weber, MVP WordVBA

Win XP, Office 2003
"red.sys" & Chr$(64) & "t-online.de"
 
Thanks. That's fine, but it must also check the value in the field. This is
because it only needs updating the first time it is created. Once the letter
is done, it shouldn't be updated every time it's opened.
 
Hi Deejay,
but it must also check the value in the field.

if ofld.Result = "hw" then ...
because it only needs updating the first time it is created.

This is a special challenge.
You got to store somewhere a boolean value
or a string or a number representing a boolean value
of kind "WasUpdated" in the document.
A doc-variable or a doc-property.

I have to leave you alone with this for a while,
but I'm sure, Graham is reading this
and will help you further on.

--
Greetings from Bavaria, Germany

Helmut Weber, MVP WordVBA

Win XP, Office 2003
"red.sys" & Chr$(64) & "t-online.de"
 
You seem to have changed your requirement. Either you want the field
updating when you open the document, as originally stated, or you don't.
Perhaps you can tell us exactly what the requirement is here? If you simply
want to insert the user initials of the document creator and get them to
stick through thick and thin, then you either need to convert the field to
text or abandon the field and insert the initials with vba.

Sub Macro2()
Dim oFld As Field
Dim sInit as String
sInit = "GM" ' Set required initials
For Each oFld In ActiveDocument.Fields
If oFld.Type = wdFieldUserInitials Then
If oFld.Result <> sInit Then
oFld.Update
oFld.Unlink
End If
End If
Next

or

Dim sInit As String
sInit = Application.UserInitials
Selection.TypeText sInit

--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP

My web site www.gmayor.com

<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
 
Sorry if I wasn't clear enough. In the template there is a field with
USERINITIALS of which the value is, say, 'ab'. When a new document is created
by, say, 'cd' the value of the above field remains 'ab'. So I wish to change
it to 'cd' or whoever the author of the new documents is when the document is
created. Once the doc. is created this value must remain constant
irrespective of who opens the file later.
 
The standard setup should already achieve that. If a new document is
created, the field should reflect the user of the PC where the document was
created. What the field in the template shows as a result is hardly
relevant. However to prevent accidental updating and to force an update on
creation of a new document, you need the following macro in the document
template.

Sub AutoNew()
Dim oFld As Field
For Each oFld In ActiveDocument.Fields
If oFld.Type = wdFieldUserInitials Then
oFld.Update
oFld.Unlink
End If
Next
End Sub

This will update any UserInitials fields in the document and convert to
text, so they are no longer fields which may be updated.

--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP

My web site www.gmayor.com

<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
 

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

Back
Top