uses comobj,excel97,excel2000;
//从Excel写数据到Access库
prodedure ExcelToMdb(EXLfile:string;);
var 
  sheet,XLApp,workbook : variant; 
  iRow,MaxRow:integer;
begin
  screen.Cursor:=crHourGlass;  
  try
    //创建对象
    XLApp:=createOleObject('Excel.Application');
      XLApp.displayAlerts:=false;
      XLApp.ScreenUpdating:=false;
    XLApp.WorkBooks.Add(EXLfile);
    workbook := XLApp.workbooks[1];
    sheet:=workbook.worksheets[1];
    //sheet:=XLApp.WorkBooks[1].worksheets[1];
    
    
    //取得最大行数  maxRow
    XLApp.ActiveCell.SpecialCells(xlLastCell).Select;
    maxRow:=XLApp.ActiveCell.Row;     //最大行数
    //写数据到Access库
    ADOTable1.open; 
    for iRow:=2 to MaxRow do 
    begin
      ADOTable1.Append ;
      ADOTable1.fieldByName('ID').asInteger:=
                                   strToInt(sheet.cells[iRow,1]); 
      ADOTable1.fieldByName('code').asString:=sheet.cells[iRow,2]; //编码
      ADOTable1.fieldByName('name').asString:=sheet.cells[iRow,3]; //名称
      ADOTable1.post;
    end;
  finally
    if not VarIsEmpty(XLApp) then begin  //释放对象
      XLApp.displayAlerts:=false;
      XLApp.ScreenUpdating:=true;
      XLApp.quit;
    end;
    screen.Cursor:=crDefault;
  end;
end;
//=================== 其他一些属性方法 ===============//
    curRow:=XLApp.ActiveCell.Row; //当前行数
    XLApp.displayAlerts:=false;   //运行宏时是否显示警告和消息
    XLApp.ScreenUpdating:=false;  //屏幕更新功能,提高速度;
                                  //结束运行后,ScreenUpdating 设回到 True
XLApp.run('macroName',params...)//运行宏
    workbook.save ;
    workBook.SaveAs(AFileName,xlNormal,'','',False,False);
//=====================================
上面这段程序,EXLfile可以用opendialog控件来打开个excel文件,把opendialgo1.filename赋给EXLfile。该段程序 
要求access数据库中不设关键字段,如果要设则需要稍微做点改动。程序的问题是最后1段“释放对象”,程序运行后,只要导入access成功,桌面的excel就不能正常运行,据我判断,并没成功释放对象,而在关闭程序后,excel还在调用中,小弟不才,不知道最后一段该如何改进,请大虾们指点指点。

 
											





 
	    


