RE: Word Automation: OLE exception error 5981 in Windows 7

Author: Ken Dibble

Posted: 2010-06-03 at 16:01:18

>What happens if you use a specific document reference in the Add call?

Interesting you should ask.

This old code I'm using would create the new document and get a file handle

for it with FCREATE(), then it would leave the file open to "lock" it to

"avoid surprises". This worked fine in Windows 2000 with VFP 9 SP 1.

Here are my test results with VFP 9 SP 1 in Windows 7:

* In my tests there are no spaces in path or file names, BTW.

cFile = "C:\SomePath\SomeFileThatDoesNotExist.doc"

Test 1:

nHandle = FCREATE(cFile) && 0 byte file created with specified path\name

WITH oMyWord

.documents.Add(cFile) && "Word could not open the document" ;

No temp file created

ENDWITH

Test 2:

* No FCREATE(), no file created

WITH oMyWord

.documents.Add(cFile) && "The document name or path is not valid" ;

No temp file created

ENDWITH

Test 3:

nHandle = FCREATE(cFile) && 0 byte file created with specified path\name

FCLOSE(nHandle)

WITH oMyWord

.documents.Add(cFile) && "Could not open macro storage" ;

4 kb temp Word file ("~$" prepended) with specified path\name

ENDWITH

Test 4:

* Original code that worked in Windows 2000 (Yes, the original call was not

a function call; no parentheses)

nHandle = FCREATE(cFile) && 0 byte file created with specified path\name

WITH oMyWord

.documents.Add && "Could not open macro storage" ;

No temp file created

ENDWITH

Test 5:

* No FCREATE(), no file name && No file created

WITH oMyWord

.documents.Add && "Could not open macro storage" ;

No temp file created

ENDWITH

Test 6:

nHandle = FCREATE(cFile) && 0 byte file created with specified path\name

FCLOSE(nHandle)

WITH oMyWord

.documents.Add && "Could not open macro storage" ;

No temp file created

ENDWITH

In each of these tests, Word created a 1 kb temp file called ~$Normal.dot

in the properly writeable location I've specified in the Word settings for

template files:

C:\Users\kend\My Documents\Office Templates\

Then the error occurs and Word hangs and must be killed in the Task Manager.

After each test I killed Word and deleted any orphaned temp files as well

as any 0 byte word files, and I shut down and restarted VFP.

So, Word at least knows where the template file should be. I assume that

Word actually opens a temp copy of Normal.dot in memory but then cannot do

anything with it before the error occurs.

Also, in the test where the file was initially created, then closed, and

then documents.add(cFile) was called, an actual temporary Word file was

created before the error occurred. There are additional parameters for

documents.Add(), including a template file name, a logical variable for

whether to use a "new template", and an integer variable for, I believe,

"visible". However, when I try:

documents.add(cFile,cTemplatePathandName,.F.,0)

I get a Word (not VFP) "syntax error".

Any suggestions?

Thanks very much for your help, Richard.

Ken Dibble

www.stic-cil.org

_______________________________________________

Post Messages to: ProFox@leafe.com

Subscription Maintenance: http://leafe.com/mailman/listinfo/profox

OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech

Searchable Archive: http://leafe.com/archives/search/profox

This message: http://leafe.com/archives/byMID/profox/5.2.1.1.1.20100603143533.01c13e70@pop3.frontiernet.net

** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.

©2010 Ken Dibble