#include "wdconst.h" Select * ; from (_samples+'data\customer') ; where country = 'USA' ; into Cursor Tempreport lcTemp = Sys(2015)+'.tmp' lnFields = Fcount() Copy To (lcTemp) Type Delimited With "" With Tab lcHeader = '' For ix = 1 To Fcount() lcHeader = lcHeader + Iif(Empty(m.lcHeader),'',Chr(9)) + ; 'A_long_header_for_field_'+Field(m.ix)+'_here' Endfor lcSourceDoc = 'c:\temp\Source.txt' Strtofile(m.lcHeader+Chr(13)+Chr(10)+; Filetostr(m.lcTemp),m.lcSourceDoc) Erase (m.lcTemp) *** set the LOCALEID to English nlLocaleId=Sys(3004) && Save local id =Sys(3006,1033) && We will be sending instructions in English *** set the LOCALEID to English Local oWordDocument, llToPrinter, lcTempDataDoc oWord=Createobject("word.application") && Create word object With oWord .documents.Add && New file or open a template With .Activedocument.Mailmerge * * Set file as data source for mailmerge * File is a tab delimited text file with header line * Since word's default settings perfectly fit * opening a tab delimited file as if it were a table * this is just we want - no need for a conversion * * Or thinking any Word owner should also have Excel * (not true always) you might open the text file with * Excel and set that as a datasource * .OpenDataSource(m.lcSourceDoc) .EditMainDocument && Activate the main document Endwith .Application.Selection.TypeText("Dear,"+Chr(13)) With .Application.Selection.Font .Name = 'Times New Roman' .Italic = .T. .Size = 14 Endwith .Activedocument.Mailmerge.Fields.Add(.Application.Selection.Range, ; 'A_long_header_for_field_Contact_here') .Application.Selection.TypeText(Chr(13)) .Activedocument.Mailmerge.Fields.Add(.Application.Selection.Range, ; 'A_long_header_for_field_Company_here') With .Application.Selection.Font .Italic = .F. .Name = 'Arial' .Size = 10 Endwith .Visible = .T. && Show word app .Activate && Make it the active foreground app Endwith **** Set the LocaleId to the previous value =Sys(3006,Val(nlLocaleId))As you see this is a sample to OpenDataSource BUT using an office friendly source which is simply another word doc (and word already knows how to open a txt file, simple and fast).
With oWord .documents.Add && New file or open a templateIf you instead write :
With oWord .documents.Add("c:\myPath\MyTemplate.doc")You'd be using a presaved template.