ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11201|回复: 21

to: DC.Direct 关于excel数据导入access

[复制链接]

TA的精华主题

TA的得分主题

发表于 2003-11-17 12:22 | 显示全部楼层 |阅读模式
quote]以下是引用DC.Direct在2003-11-16 20:50:00的发言: 我从别处只找到个大概,请问谁有具体的实例呢?盼望赐教! 如何將Excel的文件导入Access文件? 此一模块共有四个参数: 1、sSheetName:要导出资料的文件名称 (Sheet name),例如 Sheet1 2、sExcelPath:要导出资料的 Excel 档案路径名称 (Workbook path),例如 C:\book1.xls 3、sAccessTable:要导入的 Access Table 名称,例如 TestTable 4、sAccessDBPath:要导入的 Access 档案路径名称,例如 C:\Test.mdb 在声明中加入以下: Private Sub ExportExcelSheetToAccess(sSheetName As String, sExcelPath As String, sAccessTable As String, sAccessDBPath As String) Dim db As Database Dim rs As Recordset Set db = OpenDatabase(sExcelPath, True, False, "Excel 5.0") Call db.Execute("Select * into [;database=" & sAccessDBPath & "]." & sAccessTable & " FROM [" & sSheetName & "$]") MsgBox "Table exported successfully.", vbInformation, "Yams" End Sub 使用范例如下:將 C:\book1.xls 中的 Sheet1 导入 C:\Test.mdb 成为 TestTable ExportExcelSheetToAccess "Sheet1", "C:\book1.xls", "TestTable", "C:\Test.mdb" [/quote] 如下代码可以加在模块里。调用时请用如下格式 ii=ExportExcelSheetToAccess(xl_sheet,xl_name,acc_table) xl_sheet:表示表的名称,如"sheet1" xl_name:表示excel的名称,含绝对路径和扩展名,否则程序不会执行。如:"c:\book1.xls" acc_table:必须为现在的access文件里已经存在的表,且表的字段顺序和内容均需要和xl_sheet一致。否则不能运行或出错。 当 ExportExcelSheetToAccess返回 0代表xlsheet内无内容且不做任何处理。 当 ExportExcelSheetToAccess返回大于0的数值,代表共计处理了多少行记录进入access。 Function ExportExcelSheetToAccess(ByVal xl_sheet As String, ByVal xl_name As String, ByVal acc_table As String) As Integer Dim xlapp As New Excel.Application Dim xlbook As Excel.Workbook Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset cnn.Open CurrentProject.Connection rst.Open acc_table, cnn, adOpenKeyset, adLockOptimistic Set xlbook = xlapp.Workbooks.Open(xl_name) If xlbook.Worksheets(xl_sheet).Cells(2, 1) = "" Then '判断是否无内容,设第一行为字段名,从第2行开始自然为数据,如果其为空,自然就没有数据,不处理。 xlbook.Close xlapp.Quit rst.Close Set xlbook = Nothing Set xlapp = Nothing Set rst = Nothing ExportExcelSheetToAccess = 0 Exit Function End If t = 2 With xlbook.Worksheets(xl_name) Do rst.AddNew For i = 1 To rst.Fields.Count rst.Fields(j - 1) = .Cells(t, i) Next rst.Update t = t + 1 Loop Until .Cells(t, 1) = "" End With xlbook.Close xlapp.Quit set xlbook=nothing set xlapp =nothing rst.Close cnn.Close Set rst = Nothing Set cnn = Nothing ExportExcelSheetToAccess = t - 1 End Function
[此贴子已经被作者于2003-11-17 12:24:00编辑过]

TA的精华主题

TA的得分主题

发表于 2003-11-17 16:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2003-11-17 23:24 | 显示全部楼层

!具体实施过程?

以下是引用p123456789在2003-11-17 16:08:00的发言:
JzkP16wp.zip (78.53 KB, 下载次数: 129) 斑竹loadhigh及楼上,你好! 可一旦到处理具体的事物起来,相关的一切对于初学者是十分茫然的。 如何将" Ep_00.xls , Ep_01.xls , Ep_02.xls , Ep_03.xls , Ep_0a.xls " 等excel文件 导入" Ep_End.mdb "中呢(具体实施过程)? 我已将斑竹的代码加入" Ep_Total.xls "中了,但该如何调用和操控呢(没能运行)?
[此贴子已经被作者于2003-11-17 23:24:16编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-11-18 09:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你说的很对,程序在没有被调试和应用的时候总是会有bug的。根据你的实际应用,我修改了程序的bug.并且重新上传上来。你的ep实际就是从00、01、02、03四个,所以程序main就调用了我编的函数来导入excel文件,并且对每个文件进行报告。 t9CLvfD6.zip (103.88 KB, 下载次数: 283)

TA的精华主题

TA的得分主题

发表于 2003-11-18 11:46 | 显示全部楼层
以下是引用loadhigh在2003-11-18 9:35:00的发言: 你说的很对,程序在没有被调试和应用的时候总是会有bug的。根据你的实际应用,我修改了程序的bug.并且重新上传上来。你的ep实际就是从00、01、02、03四个,所以程序main就调用了我编的函数来导入excel文件,并且对每个文件进行报告。
非常感谢loadhigh,但您上传的文件里没有找到啊,麻烦您在看看

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-11-18 13:45 | 显示全部楼层

to: DC.Direct 关于excel数据导入access

to: DC.Direct 关于excel数据导入access

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-11-18 14:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
按图示的图标即可。

TA的精华主题

TA的得分主题

发表于 2003-11-18 15:27 | 显示全部楼层
万分感谢loadhigh的指教,可以使用了, 我能理解的意思是,提取access文件所在的当前文件夹中的excel文件(按excel文件名排序,main只指定提取前4个)导入access中指定表中。 还有些问题,还请斑竹予以鼎力帮助,目前使用导入过程中,不能确认检查已导入的文件被重复导入,那该如何编写避免重复导入数据文件呢? 自从到此论坛以来,得到了loadhigh您不少的帮助。 有一些十分烦琐的问题,得到了很好的解决过程。 如将从outlook中接收的每日报表(均为固定格式,含附件)自动导入指定文件夹中, http://club.excelhome.net/dispbbs.asp?boardID=22&ID=17844 在通过以上将excel文件导入access文件中,形成数据库。如能将避免同一文件被重复导入的代码得以实现,以上这一系列过程将会是很完美得。 敬请loadhigh与百忙中解决。谢谢!
[此贴子已经被作者于2003-11-29 16:13:10编辑过]

TA的精华主题

TA的得分主题

发表于 2003-11-29 16:16 | 显示全部楼层
如何阻止重复导入的问题呢?另外有没有可能在Excel中编写VBA,在excel 中运行将该excel 文件内容导入access 中呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-12-1 17:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
你的要求可以做到,我大概明天上传。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-23 21:04 , Processed in 0.039517 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表