saywell Posted August 13, 2010 Share Posted August 13, 2010 (edited) I have a script that, inter alia, creates a word doc from a template, saves it with a predetermined filename and path, then allows user to add data and save to the set location. It works fine on Word 2002, 2003 and 2007 but it failed on a PC with Word 2000. It opened the template rather than a new document based on the template, then failed to save it with a message that it can't save a document to a template format. Before I spend some time trying to de-bug this [or find another reason specific to that PC for its failure], I want to make sure that it's not just that the word UDF doesn't work fully with that old a version of word. The relevant bit of code is expandcollapse popup$oWordApp = _WordCreate ("") Local $Template = "Test3.dot" Local $oOpenTemplate = _WordDocOpen ($oWordApp, @ScriptDir & "\" & $Template) $oDoc = _WordDocGetCollection ($oWordApp, 0) _WordDocSaveAs ($oOpenTemplate, $Dir & $filename) Winclose ("Document1") $FullFilename= $Dir & $filename ;-------------------------------Newly named document created from template. Local $email = IniRead (@ScriptDir & "\ClinDoc.ini","SecEmails", $Secretary, "(insertEmail)") Local $TelNo = IniRead (@ScriptDir & "\ClinDoc.ini","SecTelNo", $Secretary, "(insertTel)") Local $FaxNo = IniRead (@ScriptDir & "\ClinDoc.ini","SecFaxNo", $Secretary, "(insertFax)") ;MsgBox (4096, "email And tel no", $email & " " & $TelNo) ; Next to add form data ;Local $OurRef = $Author&"/"&$Secretary&"/"&$HSP $oFind = _WordDocFindReplace($oOpenTemplate, "99", @MDAY,1) $oFind = _WordDocFindReplace($oOpenTemplate, "8888", @YEAR) $oFind = _WordDocFindReplace($oOpenTemplate, "Mmm",$Mon) $oFind = _WordDocFindReplace($oOpenTemplate, "HHHH", $Header) $oFind = _WordDocFindReplace($oOpenTemplate, "RRRR", $Author&"/"&$Secretary&"/"&$HSP) $oFind = _WordDocFindReplace($oOpenTemplate, "NNNN", $NHSnumber) $oFind = _WordDocFindReplace($oOpenTemplate, "CCCC", $ClinicCode,1) $oFind = _WordDocFindReplace($oOpenTemplate, "Cdcdcd", $ClinicDate) $oFind = _WordDocFindReplace($oOpenTemplate, "Addressee", $sGPaddress) $oFind = _WordDocFindReplace($oOpenTemplate, "Doctor", $Recipient) $oFind = _WordDocFindReplace($oOpenTemplate, "SURNAME", $LastName) $oFind = _WordDocFindReplace($oOpenTemplate, "FIRSTNAME", $FirstName) $oFind = _WordDocFindReplace($oOpenTemplate, "DoB", $DoB) $oFind = _WordDocFindReplace($oOpenTemplate, "(insertTel)", $TelNo) $oFind = _WordDocFindReplace($oOpenTemplate, "(insertFax)", $FaxNo) $oFind = _WordDocFindReplace($oOpenTemplate, "(insertEmail)", $email) ;Direct line: 01935 (insertTel) ;Email: (insertEmail) ; Next to add form metadata _WordDocPropertySet ($oOpenTemplate, "title", $LastName & ", " & $FirstName) _WordDocPropertySet ($oOpenTemplate, "subject", $Subject) _WordDocPropertySet ($oOpenTemplate, "author", $Secretary) _WordDocPropertySet ($oOpenTemplate, "manager", $Author) _WordDocPropertySet ($oOpenTemplate, "company", "Yeovil District Hospital NHSFT") _WordDocPropertySet ($oOpenTemplate, "keywords", $NHSnumber & ", " & $HSP & ", " & $LastName & ", " & $FirstName & ", " & $Author & ", " & $Secretary) _WordDocPropertySet ($oOpenTemplate, "template", $Template) ;----------------------new bit for v2.5 $oOpenTemplate.Range.insertAfter (@CR & $sAddress & @CR & @CR ) _WordDocSave ($oOpenTemplate) It then goes on to allow user to enter text content before saving again, copying content to use later, and closing the document: _WordDocSave ($oOpenTemplate) Sleep(500) ;$sContent = $oOpenTemplate.Activedocument.Range.Text $sContent = $oWordApp.Activedocument.Range.Text _WordQuit ($oWordApp) Regards, William Edit - I've now tried it on Word 97 and it fails on that, too - so I guess it is a version problem. Edited August 14, 2010 by saywell Link to comment Share on other sites More sharing options...
seandisanti Posted August 14, 2010 Share Posted August 14, 2010 in word you can press alt f11 to go into the vba interface then use f2 to open the object browser. then you can see the differences in the method definitions etc if you wanted to tweak your script to work with those versions too. well 2k anyway, i'm not sure on the 97 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now