>* I called this file 'wrtest.prg' >* modified only slightly from the example at >* http://www.foxite.com/articles/create_a_report_in_the_microsoft_word_format_008.htm >* >LOCAL lcTemplate, lcReport && To set the file of the template >lcTemplate='C:\DOCUME~1\ARGRANT\MYDOCU~1\VISUAL~1\EmplTamp1.doc' && file 'template' >* for this example the word doc must exist - should look like this in Word: >* >*Employees List >* >*<date()> >*<GetEmployeeList()> >* >*<gcFoot> > >lcReport='C:\DOCUME~1\ARGRANT\MYDOCU~1\VISUAL~1\EmployeeList.doc' && output filename >PUBLIC gcFoot >gcFoot='This list includes the employees, '+; > 'which help the customers to cope with their problems.'+; > CHR(13)+CHR(13)+; > 'Joe Bagofdonuts,'+CHR(13)+; > 'Personnel Manager' >LOCAL loReport >loReport=CREATEOBJECT('WordReport', lcTemplate, lcReport) >loReport.SHOW() >loReport.CREATE() >loReport.PRINT() >loReport.HIDE() >DO WHILE MESSAGEBOX('Print is complete?',; > 4+32+256,; > 'WordReport Class')=7 >ENDDO >RETURN > >*----------------------------------------------------------- >FUNCTION GetEmployeeList() >*----------------------------------------------------------- > IF !USED('EMPLLIST') > CREATE CURSOR 'empllist' (FIRST_NAME c(18),LAST_NAME c(18), TITLE c(18)) > INSERT INTO 'empllist' (FIRST_NAME, LAST_NAME, TITLE) VALUES ('James', 'Kirk', 'Captain') > INSERT INTO 'empllist' (FIRST_NAME, LAST_NAME, TITLE) VALUES ('Montgomery', 'Scott', 'Engineer') > ENDIF > SELE 'empllist' > LOCAL lcList > lcList='' > SCAN > lcList= lcList+; > PADR(ALLT(empllist.FIRST_NAME)+' '+; > ALLT(empllist.LAST_NAME),30,' ')+; > ' - '+empllist.TITLE+; > CHR(13) > ENDS > lcList=SUBSTR(lcList,1,LEN(lcList)-1) > USE IN EMPLLIST > RETURN lcList >ENDFUNC > >************************************************************ >DEFINE CLASS WordReport AS CUSTOM >************************************************************ > NAME = "WordReport" > TemplateFile = '' > ReportFile = '' > PROTECTED WordApplication > PROTECTED WordDocument > REFERENCE = .F. > PROCEDURE CREATE > LOCAL loApp, loDoc > loApp=THIS.WordApplication > loDoc=THIS.WordDocument > loDoc.SAVEAS(THIS.ReportFile) > LOCAL lcFoundText, lcCommand > loApp.SELECTION.FIND.Execute('\<*\>',,,.T.,,,.T.,1) > lcFoundText=loApp.SELECTION.TEXT > DO WHILE SUBSTR(lcFoundText,1,1)='<' AND ; > SUBSTR(lcFoundText,LEN(lcFoundText),1)='>' lcCommand=loApp.SELECTION.TEXT lcCommand=SUBSTR(lcCommand,1,LEN(lcCommand)-1) lcCommand=SUBSTR(lcCommand,2) loApp.SELECTION.TEXT=EVALUATE(lcCommand) loApp.SELECTION.FIND.Execute('\><*\>',,,.T.,,,.T.,1) > lcFoundText=loApp.SELECTION.TEXT > ENDDO > loDoc.SAVE() > ENDPROC > PROCEDURE SHOW > LPARAMETERS nStyle > LOCAL loApp > loApp=THIS.WordApplication > loApp.VISIBLE=.T. > ENDPROC > PROCEDURE HIDE > LOCAL loApp > loApp=THIS.WordApplication > loApp.VISIBLE=.F. > ENDPROC > PROCEDURE PRINT > LPARAMETERS cText > LOCAL loApp > loApp=THIS.WordApplication > IF loApp.VISIBLE > loApp.Dialogs(88).SHOW() > ELSE > THIS.SHOW() > loApp.Dialogs(88).SHOW() > THIS.HIDE() > ENDIF > ENDPROC > PROCEDURE reference_access > RETURN THIS.WordApplication > ENDPROC > PROCEDURE reference_assign > LPARAMETERS vNewVal > ENDPROC > PROCEDURE INIT > LPARAMETERS lcTempaleName, lcReportName > THIS.TemplateFile=lcTempaleName > THIS.ReportFile=lcReportName > THIS.WordApplication=CREATEOBJECT('Word.Application') > LOCAL loApp > loApp=THIS.WordApplication > THIS.WordDocument=loApp.Documents.OPEN(THIS.TemplateFile) > ENDPROC > PROCEDURE DESTROY > LOCAL loApp > loApp=THIS.WordApplication > loApp.QUIT() > ENDPROC >ENDDEFINE >