Normal.dot not saving

C

c mateland

What should I do to fix this problem? My Normal.dot is not saving on
its own. The file exists where it should and creates the temporary
~$Normal.dot file upon start. I make changes to the Normal.dot such as
a new macro or toolbar or whatever then close Word, but the Normal.dot
remains unsaved. It even displays the same modification date before the
changes. Also, I opted for notification upon change to the Normal.dot
and upon closing Word after such changes, I get no alert (because it
didn't save?).

However, I can pop over to the VBE and see the Normal.dot as a project
and save it there after changes and everything saves fine.

But why is Word not saving this automatically and what can I do to fix
it?

WinXP
Word 2002 sp3
Temp files cleared
Fast save disabled


Thanks.
 
P

Pemo

c mateland said:
What should I do to fix this problem? My Normal.dot is not saving on
its own.

A related but opposite query - how do I stop normal.dot saving when I exit
Word?

The option is to ask before it does so - but I want to stop it doing so. A
minor issue, but I like ME to be in control, not some shambling twisted
horror in the dark, dank programming cellars of Redmond.

Pemo
 
H

Howard Kaikow

Pemo said:
A related but opposite query - how do I stop normal.dot saving when I exit
Word?

The option is to ask before it does so - but I want to stop it doing so. A
minor issue, but I like ME to be in control, not some shambling twisted
horror in the dark, dank programming cellars of Redmond.

You should not disable the message warning you that the Normal templatr has
changed.
Such changes are usually the result of:

1. Poorly written macros/add-ins, 3rd party or not.
2. By design. Some innocuous operations you perform that, by design,
causeord to believethat the Normal template has changed.
3. Less frequently, by a virus.

The best way to avoid the messages is to do the following:

a. Minimize the amount of macros, etc. in the Normal template, instead put
stuff in application specific templates, some of which you may wish to load
globally.
b. Reduce the amount of code that MUST be in the normal template. More on
this below.
c. Make the Normal template READ-ONLY.

Reducing the amount of code in the Normal template reduces the chance that
the code will modify the template and reduces the need to change the
template even when coding changes are needed. For example the code below is
the only code in my READ-ONLY Normal template.

The first step is to change the extant code so that ALL of the useful code
is in a CLASS in the Normal template, and the macros consist of only stub
code that calls the subs/functions in the class.

Next, I removed the class from the Normal template and compiled the code
into a VB 6 ActiveX DLL.
The Normal template has a reference to the class.
ALL coding changes for extant macros then occur in the VB 6 class.
The only time it is necessary to modify the code in the Normal template is
to add/delete a macro.

For example, to delete (or comment out) the AutoClose macro, I just need to
delete the Sub AutoClose in the Normal template. I can, but need not, then
delete the actual AutoClose code in the class.

If I choose to add anotheer macro, say, HowOldAmI, I need only add the
following stub to the Normal template, and modify th eclass in the DLL
accordingly.

Public Sub HowOldAmI()
SetupClass
. Note that the parameters passed will depend on what is needed for the
particular macro.
clsWordVBNormal.clsHowOldAmI ActiveDocument
End Sub

This method protects the code from prying eyes and the code will execute
faster.


Option Explicit
Public clsWordVBNormal As WordVBNormal

Public Sub AutoClose()
SetupClass
clsWordVBNormal.clsAutoClose
End Sub

Public Sub AutoExec()
SetupClass
End Sub

Public Sub AutoExit()
SetupClass
clsWordVBNormal.clsAutoExit
End Sub

Public Sub AutoNew()
SetupClass
End Sub

Public Sub AutoOpen()
SetupClass
End Sub

Public Sub ResetToolsOptionsView()
SetupClass
clsWordVBNormal.clsResetToolsOptionsView ActiveDocument
End Sub

Private Sub SetupClass()
If TypeName(clsWordVBNormal) <> "WordVBNormal" Then
Set clsWordVBNormal = New WordVBNormal
clsWordVBNormal.SetClass Application
End If
End Sub
 

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