usa comobj,Excel97,excel2000;
//Escreve dados do Excel para acessar a biblioteca
PRodedure ExcelToMdb(EXLfile:string;);
var
planilha, XLApp, pasta de trabalho: variante;
iRow,MaxRow:inteiro;
começar
screen.Cursor:=crHourGlass;
tentar
//Criar objeto
XLApp:=createOleObject('Excel.aplicativo');
XLApp.displayAlerts:=falso;
XLApp.ScreenUpdating:=falso;
XLApp.WorkBooks.Add(ArquivoEXL);
pasta de trabalho := XLApp.workbooks[1];
planilha:=pasta de trabalho.planilhas[1];
//folha:=XLApp.WorkBooks[1].worksheets[1];
//Obtém o número máximo de linhas maxRow
XLApp.ActiveCell.SpecialCells(xlLastCell).Selecionar;
maxRow:=XLApp.ActiveCell.Row; //Número máximo de linhas
//Escreve dados na biblioteca do Access
ADOTable1.open;
para iRow:=2 para MaxRow faça
if sheet.cells[iRow,1]<>'' then //A palavra-chave não está vazia
começar
ADOTable1.Append;
ADOTable1.fieldByName('ID').asInteger:=
strToInt(folha.cells[iRow,1]);
ADOTable1.fieldByName('code').asString:=sheet.cells[iRow,2];//codificação
ADOTable1.fieldByName('nome').asString:=sheet.cells[iRow,3];//nome
ADOTable1.post;
fim;
finalmente
se não for VarIsEmpty(XLApp) então comece //Libere o objeto
XLApp.displayAlerts:=falso;
XLApp.ScreenUpdating:=true;
XLApp.quit;
fim;
tela.Cursor:=crDefault;
fim;
fim;
//==================== Alguns outros métodos de atributos===============//
curRow:=XLApp.ActiveCell.Row;//Número de linhas atuais
XLApp.displayAlerts:=false;//Se exibir avisos e mensagens ao executar macros
XLApp.ScreenUpdating:=false; //Função de atualização de tela, melhora a velocidade;
//Após finalizar a operação, ScreenUpdating volta para True
XLApp.run('macroName',params...)//Executar macro
pasta de trabalho.save;
workBook.SaveAs(AFileName,xlNormal,'','',False,False);