utilise comobj, Excel97, Excel2000 ;
//Écrire des données depuis Excel pour accéder à la bibliothèque
PRodure ExcelToMdb(EXLfile:string;);
var
feuille,XLApp,classeur : variante ;
iRow,MaxRow:entier;
commencer
screen.Cursor:=crHourGlass;
essayer
//Créer un objet
XLApp:=createOleObject('Excel.application');
XLApp.displayAlerts :=false ;
XLApp.ScreenUpdating :=false ;
XLApp.WorkBooks.Add(EXLfile);
classeur := XLApp.workbooks[1];
feuille:=workbook.worksheets[1];
//feuille:=XLApp.WorkBooks[1].worksheets[1];
//Obtenir le nombre maximum de lignes maxRow
XLApp.ActiveCell.SpecialCells(xlLastCell).Select;
maxRow:=XLApp.ActiveCell.Row; //Nombre maximum de lignes
//Écrire des données dans la bibliothèque Access
ADOTable1.open;
pour iRow :=2 à MaxRow, faites
if sheet.cells[iRow,1]<>'' then //Le mot clé n'est pas vide
commencer
ADOTable1.Append ;
ADOTable1.fieldByName('ID').asInteger:=
strToInt(sheet.cells[iRow,1]);
ADOTable1.fieldByName('code').asString:=sheet.cells[iRow,2];//encodage
ADOTable1.fieldByName('name').asString:=sheet.cells[iRow,3];//name
ADOTable1.post;
fin;
enfin
sinon VarIsEmpty (XLApp) alors commencez // Libérez l'objet
XLApp.displayAlerts :=false ;
XLApp.ScreenUpdating :=true ;
XLApp.quit ;
fin;
screen.Cursor:=crDefault;
fin;
fin;
//==================== Quelques autres méthodes d'attribut ===============//
curRow:=XLApp.ActiveCell.Row;//Numéro de la ligne actuelle
XLApp.displayAlerts:=false;//S'il faut afficher des avertissements et des messages lors de l'exécution de macros
XLApp.ScreenUpdating:=false; //Fonction de mise à jour de l'écran, amélioration de la vitesse ;
//Une fois l'opération terminée, ScreenUpdating est remis à True
XLApp.run('macroName',params...)//Exécuter la macro
classeur.save;
workBook.SaveAs(AFileName,xlNormal,'','',False,False);