SET SAFETY off #DEFINE olContactItem 2 clear oOutlook = CreateObject("Outlook.Application") oci = oOutlook.CreateItem( olContactItem ) LOCAL ol AS Outlook.Application LOCAL oNamespace as Outlook.NameSpace LOCAL oContactFolder AS Outlook.MAPIFolder LOCAL oContactItem AS Outlook.ContactItem ol=CREATEOBJECT("outlook.application") oNameSpace = ol.GetNamespace("MAPI") * olContacts constant = 10 oContactFolder = oNameSpace.GetDefaultFolder( 10 ) oContactItems = oContactFolder.Items CREATE TABLE myyline ( zType c(10), zFieldName c(50), zContents c(250)) xx = 1 IF xx = 2 CREATE TABLE myline ( myline c(80)) For ix = 1 to AMembers(aoci,oci,3) If aOci[m.ix,2] == "PropertyPut" myField = aOci[m.ix,1] myCount = STR(AMEMBERS(aoci,oci,3)) AndShow = STR(ix) +" of "+ myCount + " " +myField ? AndShow GO bott APPEND BLANK GO bott REPLACE myline WITH myField endif ENDFOR ELSE CLOSE data USE myLine SELECT 2 USE myyline SELECT 1 Endif GO top *BROWSE WIDTH 40 FOR EACH oContactItem IN oContactItems *IF oContactItem.Class = 40 GO top DO WHILE .not. EOF() oMyField = ALLTRIM(myLine) oField = "oContactItem." + oMyField mVar = varTYPE(&oField) isEmpty = 0 FieldCont = "" ** date IF mVar == "T" tField = DTOC(&oField) IF tField == "01/01/01" isEmpty = 1 else FieldCont = tField Endif endif ** charac IF mVar == "C" FieldLen = LEN(alltrim(&oField)) IF FieldLen = 0 isEmpty = 1 Else FieldCont = alltrim(&oField) Endif endif ** number IF mVar == "N" FieldLen = LEN(alltrim(STR(&oField))) IF FieldLen = 0 isEmpty = 1 Else FieldCont = alltrim(STR(&oField)) Endif ** those 0 or 1 fields IF FieldCont == "0" .or. FieldCont == "1" FieldCont = "" Endif endif ** result IF LEN(ALLTRIM(FieldCont)) > 0 mTy = mVar mFiel = oMyField mCont = FieldCont ? mTy, mFiel, mCont SELECT 2 GO bott APPEND BLANK GO bott REPLACE zType WITH mVar REPLACE zFieldName WITH mFiel REPLACE zContents WITH mCont SELECT 1 *WAIT Endif **** Skip Enddo SELECT 2 GO bott APPEND BLANK GO bott REPLACE zContents WITH "----------------------------------" SELECT 1 *ENDIF ENDFOR ** now move to Word