Local oExcel,oSheet,oDataRange oExcel = Createobject("Excel.Application") With oExcel .WorkBooks.Add .Visible = .T. oSheet = .ActiveWorkBook.ActiveSheet m.oSheet.Name = "Customers" VFP2Excel(_samples+'data\testdata.dbc', 'select * from customer', m.oSheet) oDataRange = oSheet.UsedRange * Add a dummy sheet and copy unique country values WITH .ActiveWorkBook.WorkSheets.Add .Name = 'dummysheet' endwith * "Hardcoded" value 9 - Country is 9th field oDataRange.Columns(9).AdvancedFilter(2,'',.ActiveWorkbook.Worksheets('dummysheet').Range('a1'),.t.) laVals = .ActiveWorkbook.Worksheets('dummysheet').UsedRange.Value * Done with dummy sheet - delete .DisplayAlerts = .F. .ActiveWorkbook.Worksheets('dummysheet').Delete * For each country in laVals (if not empty) create a new sheet and copy data FOR ix=2 TO ALEN(laVals) IF !EMPTY(laVals[m.ix]) loSheet = .ActiveWorkBook.WorkSheets.Add loSheet.name = TRIM(laVals[m.ix]) oDataRange.AutoFilter(9,laVals[m.ix],,,.f.) oSheet.UsedRange.Copy(loSheet.Range('a1')) loSheet.UsedRange.Columns.Autofit endif endfor oSheet.AutoFilterMode = .f. oSheet.Activate Endwith Function VFP2Excel Lparameters tcDataSource, tcSQL, toSheet If Type('m.toSheet.Application.Name') = 'C' And Atc('Excel',m.toSheet.Application.Name) > 0 Local loConn As AdoDB.Connection, ; loRS As AdoDB.Recordset,ix loConn = Createobject("Adodb.connection") loConn.ConnectionString = "Provider=VFPOLEDB;Data Source="+m.tcDataSource loConn.Open() loRS = loConn.Execute(m.tcSQL) With m.toSheet For ix=1 To loRS.Fields.Count .Cells(1,m.ix).Value = Proper(loRs.Fields(m.ix-1).Name) Endfor .Range('A2').CopyFromRecordSet( loRS ) .UsedRange.Rows(1).Font.Bold = .T. .UsedRange.Columns.Autofit Endwith loRs.Close loConn.Close Endif EndfuncCetin