Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Merging Different Documents in Word
Message
General information
Forum:
Visual FoxPro
Category:
Other
Miscellaneous
Thread ID:
01101747
Message ID:
01101781
Views:
13
If you have the data in Fox, there is an example I used to create Word docs from a 'base' or template file.

You could modify this to open multiple template files according to the value in a field in the table.
* 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
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform