CREATE CURSOR test (myID i, myValue n(10,2)) INSERT INTO test VALUES (1, 11000.03) oExcel = Createobject("Excel.Application") With oExcel .Workbooks.Add .Visible = .T. With .ActiveWorkBook.ActiveSheet VFP2Excel('test', .Range('A1')) Endwith Endwith Function VFP2Excel Lparameters tcCursorName, toRange, tcHeaders tcCursorName = Iif(Empty(m.tcCursorName),Alias(),m.tcCursorName) Local loConn As AdoDB.Connection, loRS As AdoDB.Recordset,; lcTemp, oExcel,ix lcTemp = Forcepath(Sys(2015)+'.dbf',Sys(2023)) Select (m.tcCursorName) Copy To (m.lcTemp) loConn = Createobject("Adodb.connection") loConn.ConnectionString = "Provider=VFPOLEDB;Data Source="+Sys(2023) loConn.Open() loRS = loConn.Execute("select * from "+m.lcTemp) * Use first row for headers Local Array aHeader[1] toRange.Offset(1,0).CopyFromRecordSet( loRS ) && Copy data starting from headerrow + 1 For ix=1 To Iif( !Empty(m.tcHeaders), ; ALINES(aHeader, m.tcHeaders,1,','), ; loRS.Fields.Count ) toRange.Offset(0,m.ix-1).Value = ; Iif( !Empty(m.tcHeaders), ; aHeader[m.ix], ; Proper(loRS.Fields(m.ix-1).Name) ) toRange.Offset(0,m.ix-1).Font.Bold = .T. Endfor loRS.Close loConn.Close Erase (m.lcTemp) EndfuncPS: Why are you trying to create your own RS when there is VFPOLEDB.