问问题描述
答精选答案

用access自动获取excel里的数据的方法就是通过代码的方式导入。
如果是对手动导入比较清楚的话,这个实现起来不难。请参考下面的介绍来实现:首先,新建一个工程,在工程中引用如下对象ADO对象(用于连接ACCESS数据库,可用其它方式)添加一个窗体(from1),在窗体上添加如下控件:两个文本框,用来显示EXCEL文件路径和ACCESS路径;四个扭钮,两个用来游览,另两个是导入和退出;两个通用对话框控件,用来打开ACCESS和EXCEL文件,一个进度条控件,用来显示导入进程。该实例的导入是将ACCESS数据库中表的字段名单独存放在另外一个表中,导入时按表中所存字段名的顺序进行导入,不是按EXCEL表的顺序导入,请大家注意.这样在实际中是很实用的.因为好多时候EXCEL表中字段顺序和ACCESS中字段顺序有可能不是一致的.代码如下:Dim vOption ExplicitPrivate Sub cmdLoad_Click()Dim excel_app As ObjectDim excel_sheet As ObjectIf txtExcelFile.Text = "" ThenMsgBox "请选择EXCEL表"ElseDim new_value As StringLabel2.Caption = "正在导入,请稍候..."Screen.MousePointer = vbHourglassDoEvents'' Create the Excel application.Set excel_app = CreateObject("Excel.Application")'' Uncomment this line to make Excel visible.excel_app.Visible = True'' Open the Excel spreadsheet.excel_app.Workbooks.open FileName:=txtExcelFile.Text'' Check for later versions.If Val(excel_app.Application.Version) >= 8 ThenSet excel_sheet = excel_app.ActiveSheetElseSet excel_sheet = excel_appEnd IfDim u ''求EXCEL表中记录的条数,以便控制进度条u = 1Do If Trim$(excel_sheet.Cells(u, 1)) = "" Then Exit Dou = u + 1Loop bar.Max = u - 1strSQL = "select * from TestValues" yourRecord.open strSQL, myConn, adOpenDynamic, adLockOptimistic ''打开记录集 Dim sql As Stringsql = "select * from fields order by xue" myRecord.open sql, myConn, adOpenDynamic, adLockBatchOptimistic ''打开字段记录集 myRecord.MoveFirst'' Get data from the Excel spreadsheet and insert'' it into the TestValues table.Dim v ''导入记录,用了两层循环v = 1DoIf Trim$(excel_sheet.Cells(v, 1)) = "" Then Exit Do ''外层,如果EXCEL表中读取到空行,结束yourRecord.AddNewDim iFor i = 1 To myRecord.RecordCount'' Get the next value.new_value = Trim$(excel_sheet.Cells(v, i))'' See if it''s blank.''If Len(new_value) = 0 Then Exit Do '' Insert the value into the database.Dim bb As Stringbb = myRecord("name")yourRecord(bb) = new_valuemyRecord.MoveNextNext i bar.Value = v v = v + 1 myRecord.MoveFirstLoopyourRecord.Update'' Comment the rest of the lines to keep'' Excel running so you can see it.'' Close the workbook without saving.excel_app.ActiveWorkbook.Close False'' Close Excel.excel_app.QuitSet excel_sheet = NothingSet excel_app = NothingmyRecord.CloseyourRecord.CloseSet myRecord = NothingSet yourRecord = NothingLabel2.Caption = "导入完毕" Screen.MousePointer = vbDefaultMsgBox "共导入" & Format$(v - 1) & "条记录"End IfEnd SubPrivate Sub Command1_Click()Unload MeEnd SubPrivate Sub Command2_Click(Index As Integer)''寻找ACCESS数据库CommonDialog1.Filter = "ACCESS 文件(*.mdb)|*.mdb"CommonDialog1.CancelError = TrueCommonDialog1.ShowOpentxtAccessFile.Text = CommonDialog1.FileNameEnd SubPrivate Sub Command3_Click()''寻找excel数据库CommonDialog2.Filter = "excel 文件(*.xls)|*.xls"CommonDialog2.CancelError = TrueCommonDialog2.ShowOpentxtExcelFile.Text = CommonDialog2.FileNameEnd SubPrivate Sub Form_Load()Call Module1.lianjietxtAccessFile.Text = datapath End Sub模块(module1)中的代码如下:Public myConn As New ADODB.Connection ''定义连接字符串Public myRecord As New ADODB.Recordset ''定义记录集(字段)Public yourRecord As New ADODB.Recordset ''定义记录集(数据)Public cntoad As Boolean ''是否正常连接Public ml ''姓名字段所在列Public strSQL ''查询字符串Public MyDatabase As Database ''定义数据库名Public MyTable As TableDef, MyField As Field ''定义表名和字段名Public xuehao ''读取字段序号Public goshiRecord As New ADODB.Recordset ''定义记录集(公式)Public hxfyn As BooleanPublic hxfbds '' 公式或条件Public duan ''要统计的字段Public islinshi As Boolean ''是否为临时公式Public leiRecord As New ADODB.Recordset ''定义记录集(工资类别)Public datapath As String ''数据库路径及名Public table As String ''工资表名Public lei As String '' 工资类别Public Sub lianjie() ''打开数据库On Error Resume NextmyConn.CloseDim mySQL As String''设定连接字符串mySQL = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;"mySQL = mySQL + "Data Source=" & datapathmyConn.ConnectionString = mySQL''设定连接 myConn.open ''打开连接myRecord.ActiveConnection = myConn''设定RecordSeet的连接对象为ConnectionmyRecord.CursorLocation = adUseClientgoshiRecord.ActiveConnection = myConn''设定RecordSeet的连接对象为ConnectiongoshiRecord.CursorLocation = adUseClient yourRecord.ActiveConnection = myConn''设定RecordSeet的连接对象为Connection yourRecord.CursorLocation = adUseClientEnd Sub
答其他回答(1条)
-
涉及问题:
每月都收excel基础表名称201401201402面sheet及表结构都固定
我想没做我些表都放文件夹用access抓取access建立新汇总表且新月excel数据我需要张excel表丢进文件夹access汇总表数据自新表数据收集进
前家做网页数据库像用javascript能做现仅仅access应用知道该何处理麻烦家帮我指点谢谢
本文来自作者[小小是我哒]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/huijikaozheng/202609/469861.html

评论列表(4条)
我是公众科技网的签约作者“小小是我哒”!
希望本篇文章《如何用access自动获取excel里面的数据》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:用access自动获取excel里的数据的方法就是通过代码的方式导入。如果是对手动导入比较清楚的话,这个实现起来不难。请参考下面的介绍来实现:首先,新建一个工程,在工程中引用如下对象ADO对象(用于连接ACCESS数据库,可用其它方式)添加一个窗体(from1),在窗体上添加如下控件:两个文本框,用来显示EXCEL文件路径和ACCESS路径;四个扭钮,两个用来游览,另两个是导入和退出;两个通用对话框控件,用来打开ACCESS和EXCEL文件,一个进度条控件,用来显示导入进程。该实例的导入是将ACCESS数