Question: I am using Word 2007, but saving my documents in .doc (as opposed to .docx) formats because that's company policy. 

I have the ToC set up fine, but is there a way to have it update automatically (at document open, save or otherwise)? Word help suggests that it should update upon opening the document, but that doesn't seem to happen.

Any ideas?

Answer: 
If there's a check mark on the option Tools > Options > Print > Update
fields (in Word 2007, Office button > Word Options > Display > Update fields
before printing), then going to Print Preview and back will update the
fields. But it's just as easy to press Ctrl+A and then F9.

If you're looking for something that doesn't need any user interaction at
all, then you need a macro.  

An example of a macro to update all fields of type ToC is:

> 
> Sub TOCFieldUpdate()  
> 
> 
> 
> 

If you wish to periodically execute the above macro, here's another macro for that.  

that will update the ToC every 5 minutes:

> 
> Public Sub ToCUpdate()  
> 
> 
> 
> 

You can assign this macro to an icon or a hotkey. I wouldn't suggest to make it run automatically when the document opens, as you would run against the latest security safeguards of Microsoft.

Note: The above is untested, and even worse, is my very first attempt in writing VBA.
You will need a macro for this.

You have an example of such a macro [**here**](http://techoflaw.blogspot.com/2009/03/motd-autoupdate-fields-on-save.html), used to update the "Save date" field. It will work with all fields in the document, and a Table Of Content is also a field so that should do the trick for you.

if you don't care about the "Save date" field (and thus the trick to save the doc twice so the "Save date" field is really updated), you can remove the following lines:

```
Dim bSaveDate As Boolean
bSaveDate = False

...

If oField.Type = wdFieldSaveDate Then
    bSaveDate = True
End If

...

If bSaveDate = True Then
    MsgBox "Save a second time to update a save date field"
End If

```