PRIVATE lcDir, ; lnArchives, ; laFiles, ; lnCount, ; x IF ! "FOXTOOLS" $ UPPER(SET("LIBRARY")) SET LIBRARY TO HOME() + "FOXTOOLS" ADDITIVE ENDIF lcDir = GETDIR(CURDIR(), "Où sont les tables?") IF EMPTY(lcDir) = MESSAGEBOX ("Pas de répertoire sélectionné!") RETURN ENDIF lnArchives = ADIR(laFiles, (lcDir+"*.DBF")) oWord = CREATEOBJECT("Word.Application") oWord.Visible = .T. oWord.Documents.Add FOR lnCount = 1 TO lnArchives x = lnCount USE (lcDir + laFiles[lnCount, 1]) DO WriteTable ENDFOR oWord.WindowState = 1 *-- Column 1: name of field *-- Column 2: type *-- Column 3: size *-- Column 4: width *-- Column 5: description PROCEDURE WriteTable PRIVATE lnFields, ; laFields, ; lcDBF lnFields = AFIELDS[laFields] lcDBF = JustFname(DBF()) oWord.activeDocument.Content.InsertAfter(lcDBF) oWord.activeDocument.Content.InsertParagraphAfter oWord.selection.moveDown 1 oWord.activeDocument.range(oWord.activeDocument.Paragraphs(1).Range.start, ; oWord.activeDocument.Paragraphs(lnCount + 1).Range.end) oWord.selection.moveDown 1 oWord.activeDocument.Content.tables.add(oWord.selection.range, lnFields+1, 5) *-- write the header of each table oWord.activeDocument.Tables(x).cell(1,1).Range.InsertAfter("Name") oWord.activeDocument.Tables(x).cell(1,2).Range.InsertAfter("Data Type") oWord.activeDocument.Tables(x).cell(1,3).Range.InsertAfter("Size") oWord.activeDocument.Tables(x).cell(1,4).Range.InsertAfter("Width") oWord.activeDocument.Tables(x).cell(1,5).Range.InsertAfter("Description") oWord.activeDocument.Tables(x).Rows(1).Select oWord.Selection.Font.Size = 14 oWord.Selection.Font.Bold = .T. LOCAL lnCount FOR lnCount = 1 TO lnFields oWord.activeDocument.Tables(x).cell(lnCount+1, 1).Range.InsertAfter(laFields[lnCount, 1]) oWord.activeDocument.Tables(x).cell(lnCount+1, 2).Range.InsertAfter(laFields[lnCount, 2]) oWord.activeDocument.Tables(x).cell(lnCount+1, 3).Range.InsertAfter(laFields[lnCount, 3]) oWord.activeDocument.Tables(x).cell(lnCount+1, 4).Range.InsertAfter(laFields[lnCount, 4]) ENDFOR FOR lnCount = 1 TO lnFields+3 oWord.Selection.moveDown ENDFOR oWord.activeDocument.Content.InsertParagraphAfter ENDPROCJosé