Hola experto: Ahí va mi pregunta: Quiero traspasar desde visual los datos de una tabla de access a una tabla de Excel. Si me ayudaras también para que esta tabla de excel venga con fórmulas como de suma, división, multiplicación, etc.; seria excelente. Lucho Miguel
Es difícil contestar tu pregunta, pero creo que será más fácil si te mando unos ejemplos; analizalos y quedo a la espera de tus comentarios. La función COPY TO ... TYPE XL5 tiene la limitación de no poder copiar más de 16.384 registros (que es la limitación del número de filas de Excel 5.0 ó '95). Podemos usar OLE AUTOMATION para abrir la tabla con Excel y luego guardarla con "Guardar como XLS" desde Excel. Ejemplo: USE MiTabla && RECCOUNT("MiTabla") > 16384 registros !!! lcDBF = "C:\MiDBF.dbf" lcXLS = "C:\MiXLS.xls" COPY TO (lcDBF) TYPE FOX2X AS 850 loExcel = CREATEOBJECT("Excel.Application") WITH loExcel.Application .Workbooks.Open(lcDBF) .ActiveWorkbook.SaveAs(lcXLS, -4143, "", "", .F., .F.) .Workbooks.Close Endwith RELEASE loExcel Recordar que el número máximo de filas de Excel 97 y 2000 es de 65.536 filas. */*/*/*/*/ Imprimir con formato de Excel #define xlLastCell 11 #define xlMaximized -4137 #define xlRangeAutoformatClassic2 2 #define xlPortrait 1 use MyTable && or SELECT * INTO MyCursor cFileName = "MyXLSFile" && o lo que sea, incluyendo ruta *copy to (cFileName) fields (cFields) TYPE xls copy to (cFileName) TYPE xls * abrir excel y formatear datos oExcel = CreateObject("Excel.Application") if vartype(oExcel) != "O" * mostar mensaje de error aqui return .F. endif * hacer a Excel visible durante desarrollo *oExcel.visible = .T. * abrir el workbook oExcel.SheetsInNewWorkBook = 1 oWorkbook = oExcel.Workbooks.Open(cFileName) * enombrar la página (shhet) a lo que quiera oActiveSheet = oExcel.ActiveSheet oActiveSheet.Name = "MyData" oExcelApp = oExcel.Application oExcelApp.WindowState = xlMaximized * buscar dirección de la última celda lcLastCell = oExcel.ActiveCell.SpecialCells(xlLastCell).Address() * ajustar ancho de columnas lnMarker1 = at("$",lcLastCell,1) && i.e. 1 when lcLastCell = "$AF$105" lnMarker2 = at("$",lcLastCell,2) && i.e. 4 when lcLastCell = "$AF$105" lnStartPos = lnMarker1 + 1 lnStrLen = lnMarker2 - lnStartPos oExcel.Columns("A:" + substr ; (lcLastCell,lnStartPos,lnStrLen)).EntireColumn.AutoFit * usar autoformat (aqui usamos 2 como ejemplo) oExcel.Range("A" + alltrim(str(nTOPBLANKROWS+1)) + ":" + lcLastCell).Select oExcel.Selection.AutoFormat(xlRangeAutoformatClassic2,.t.,.t.,.t.,.t.,.t.,.t .) * marcar area a imprimir oActiveSheet.PageSetup.PrintArea = "$A$1:" + lcLastCell * definir pie de página With loActiveSheet.PageSetup *.LeftHeader = "" *.CenterHeader = "" *.RightHeader = "" .LeftFooter = "&BMy Footer goes here&B" .CenterFooter = "&D" .RightFooter = "Page &P" *.PrintHeadings = .F. .PrintGridlines = .F. .CenterHorizontally = .T. .CenterVertically = .F. .Orientation = xlPortrait endwith * guardar Excel en formato nuevo (COPY TO XLS usa formato viejo) oWorkbook.Save() * mostrar Excel al usuario oExcel.visible = .T. */*/*/*/*