************************************************** * Start of code ************************************************** PUBLIC oWordDocument *** set the LOCALEID to English nlLocaleId=sys(3004) && Save local id =sys(3006,1033) && We will be sending instructions in English WAIT window nowait "Creating Word Document..." && Inform user oWordDocument=createobject("word.basic") && Create word object WITH oWordDocument * Remove the rem if you want the user see what's going on in word .appshow && Show word app - Word 7.0 support .filenewdefault && New file, default template - Will create datasource cDSN = "DSN=Visual FoxPro Tables;UID=;PWD=;" cSourceDb = "SourceDB="+home()+"\SAMPLES\DATA\Testdata.dbc" cSourceType = ";SourceType=DBC;" cOther = "Exclusive=No;BackgroundFetch=No;Collate=Machine;" cSQLStatement = "SELECT recno() as rcno,* FROM employee" * Insertdatabase parms build here for clarifying * 35,511 are autoformatting options for grid - ignore * 0 Link to source false .InsertDatabase(35,511,0, ; cDSN+cSourceDb+cSourceType+cOther, ; cSQLStatement,,,,,,,1) .filesaveas("c:\temp\xxtempmmergedoc",0) && Save as a word doc for mailmerge .fileclose(1) && Close saving * Datasource ready, now create mailmerge main document * If you have a document template with logo in header&footer etc use it else .filenewdefault * .filenew("c:\temp\prttest.doc") && New file based on prttest (Logo in header - address in footer) .filenewdefault * This needs template file already EXISTS ! * Just create "c:\temp\prttest.doc" for testing .MailMergeOpenDataSource("c:\temp\xxtempmmergedoc.doc") && Set saved file as data source for mailmerge (Directly a table could be set via ODBC) .MailMergeEditMainDocument && Activate the main document .insertmergefield("rcno") .insertpara .Insert("Dear ") && Start writing .insertmergefield("First_name") && Insert a merge field - any field in data table .Insert(",") .insertpara && Or +chr(13) to previous .Insert("...Some text here..."+chr(13)) .insertmergefield("Notes") && Memo field .Insert("...Some text here..."+chr(13)) .Insert("Thanks.") .insertpara .Insert("Yours sincerely") .insertpara .insertpara * Instead of these inserts template could hold the formatted text and * mark the mergefield places with bookmarks * or totally preset template doc could there be * .editbookmark("Contact",,,,1) && Goto bookmark * .InsertMergeField("Contact") * * Following address is fictional (Tel. is mine) .insert("6200 Science Fiction Street"+chr(13)) .insert("Somecity, AR 80111"+chr(13)) .insert("TEL: (+90) 232-278 50 83 FAX: (+90) 232-278 50 82"+chr(13)) * .MailMergeToDoc && Merge to a new document - For printer .MailMergeToPrinter * .FileSaveAs("c:\temp\frmletters.doc") && If want to save * .MailMergeToPrinter * .Fileexit(2) && Exit no save - directly print and exit w/o save ENDWITH * InsertWordField could also be used but FP is more capable of it so we should have transfered the needed already * Here the control is passed to word. Sitting and waiting for further process. *wait window "Data Merged to c:\temp\frmletters.doc" nowait **** Set the LocaleId to the previous value =sys(3006,val(nlLocaleId)) ************************************************** * End of code **************************************************Preferred wordbasic commands because work both with word97 and word95.