ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何利用vba自动合并多个excel文件到access中

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-8-24 17:31 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不知道为什么上午发的帖子不见了
如题,想利用vba把多个excel文件中的部分信息合并到一起。
excel文件的格式是一样的,但由于这样的excel文件有好几百个,需要借助vba来自动化,从中抽取部门信息进行合并,另考虑到excel行数限制,所以想把合并后的文件放到access中。
如附件111,A9之后的信息作为每个文件内需要被合并的。另外需要添加一列名为SBA的,将excel文件中A7单元格的数字作为内容添加到这一列中,文件不同,A7内容就不同。
合并后的access格式如附件consolidate.
小女子在这里先谢过了。

111.zip

480 Bytes, 下载次数: 64

Consolidate.zip

8.67 KB, 下载次数: 56

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-25 09:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
有人能帮帮忙么?谢谢

TA的精华主题

TA的得分主题

发表于 2009-8-25 16:07 | 显示全部楼层
原帖由 miomip 于 2009-8-24 17:31 发表
不知道为什么上午发的帖子不见了
如题,想利用vba把多个excel文件中的部分信息合并到一起。
excel文件的格式是一样的,但由于这样的excel文件有好几百个,需要借助vba来自动化,从中抽取部门信息进行合并,另考虑到 ...


首先要把access表中的字段名修改到与excel中的一致(有3处需要修改),其次是在每个excel文件中定义名称(示例中二个区域分别定义为aa和bb),再就是将所有的excel文件与这个access文件放在同一个文件夹中。
HHH.rar (17.98 KB, 下载次数: 125) 打开access,点击按钮就可以了。

[ 本帖最后由 sgrshh29 于 2009-8-27 10:24 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-26 18:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 3楼 sgrshh29 的帖子

谢谢楼上。
有个地方不太懂,在每个excel文件中定义名称的话,是每个excel文件都要定义对么?那么几百个文件都要打开手动来定义么?
请指教。谢谢

[ 本帖最后由 miomip 于 2009-8-26 18:08 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-8-27 07:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 miomip 于 2009-8-26 18:03 发表
谢谢楼上。
有个地方不太懂,在每个excel文件中定义名称的话,是每个excel文件都要定义对么?那么几百个文件都要打开手动来定义么?
请指教。谢谢

可以用代码批量定义名称。如果不想定义名称,则可以将代码改动一下,将 strfilepath & strfilename & "].aa
改为 strfilepath & strfilename & "].[sheetname$aa9:o14] ,相应的bb也改一下。不过这时要求每个文件的sheet的名称都是一样的,起码要与文件名是一样的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-27 10:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 5楼 sgrshh29 的帖子

如果是改动代码的话,那么sql语句select bb.*, aa.number中的aa, bb也要改吧
是不是要先把aa,bb定义一下呢,怎么定义呢?谢谢。

TA的精华主题

TA的得分主题

发表于 2009-8-27 10:09 | 显示全部楼层
任何一个sheet的名称都与这个excel文件名称一致吗?每个excel是否只有一个sheet?还是什么其它情况?你能不能说一说?

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-27 10:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 7楼 sgrshh29 的帖子

是的,每个excel都只有一个sheet,而且与excel文件名相同。

TA的精华主题

TA的得分主题

发表于 2009-8-27 10:23 | 显示全部楼层
那就把代码中的sql语句改为如下所示:
strsql = "INSERT INTO Consolidate ( SBA ) SELECT bb.*, aa.Number AS sba FROM " _
             & "[Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & strfilepath & strfilename & "].[" & Left(strfilename, Len(strfilename) - 4) & "$a9:o65000] as bb, " _
             & "[Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & strfilepath & strfilename & "].[" & Left(strfilename, Len(strfilename) - 4) & "$a6:a7] as aa;"
其它的代码不要改动。
把下面这个文件解压后,放到那一堆excel文件的文件夹中,然后打开,点击按钮就可以了。
Consolidate.rar (15.27 KB, 下载次数: 69)

[ 本帖最后由 sgrshh29 于 2009-8-27 10:50 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-8-27 13:53 | 显示全部楼层

回复 9楼 sgrshh29 的帖子

出错了,aa.number好像不会被识别吧?
我改成aa.*说查询的和目的地格式不对
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 18:43 , Processed in 0.026903 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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