utiliza comobj,Excel97,excel2000;
//Escribe datos desde Excel para acceder a la biblioteca
PRodedure ExcelToMdb(EXLfile:string;);
var
hoja, XLApp, libro de trabajo: variante;
iRow,MaxRow:entero;
comenzar
pantalla.Cursor:=crHourGlass;
intentar
//Crear objeto
XLApp:=createOleObject('Excel.aplicación');
XLApp.displayAlerts:=falso;
XLApp.ScreenUpdating:=falso;
XLApp.WorkBooks.Add(EXLfile);
libro de trabajo := XLApp.workbooks[1];
hoja:=libro de trabajo.hojas de trabajo[1];
//hoja:=XLApp.WorkBooks[1].worksheets[1];
//Obtener el número máximo de filas maxRow
XLApp.ActiveCell.SpecialCells(xlLastCell).Select;
maxRow:=XLApp.ActiveCell.Row; //Número máximo de filas
//Escribir datos en la biblioteca de Access
ADOTable1.abierto;
para iRow:=2 a MaxRow hacer
si hoja.celdas[iRow,1]<>'' entonces //La palabra clave no está vacía
comenzar
ADOTable1.Agregar;
ADOTable1.fieldByName('ID').asInteger:=
strToInt(hoja.celdas[iRow,1]);
ADOTable1.fieldByName('código').asString:=sheet.cells[iRow,2];//codificación
ADOTable1.fieldByName('nombre').asString:=sheet.cells[iRow,3];//nombre
ADOTable1.post;
fin;
finalmente
si no es VarIsEmpty(XLApp), entonces comience //Libera el objeto
XLApp.displayAlerts:=falso;
XLApp.ScreenUpdating:=verdadero;
XLApp.salir;
fin;
pantalla.Cursor:=crDefault;
fin;
fin;
//===================== Algunos otros métodos de atributos================//
curRow:=XLApp.ActiveCell.Row;//Número de fila actual
XLApp.displayAlerts:=false;//Si se muestran advertencias y mensajes al ejecutar macros
XLApp.ScreenUpdating:=false; //Función de actualización de pantalla, mejora la velocidad;
//Después de finalizar la operación, ScreenUpdating vuelve a establecerse en True
XLApp.run('macroName',params...)//Ejecutar macro
libro de trabajo.guardar;
workBook.SaveAs(AFileName,xlNormal,'','',False,False);