Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

遍历ACCESS文件导出EXCEL

张素禄  发表于:2016-02-04 08:51:28  
复制

Option Compare Database


'------------------------------------------------------------
' 宏2
'
'------------------------------------------------------------
Function 宏2()
On Error GoTo 宏2_Err


    DoCmd.OutputTo acOutputTable, "居民出行调查个人表", "ExcelWorkbook(*.xlsx)", "", False, "", , acExportQualityPrint




宏2_Exit:
    Exit Function


宏2_Err:
    MsgBox Error$
    Resume 宏2_Exit


End Function

这段代码是利用ACCESS自带的宏转换后的VBA代码,是在一个打开的ACCESS文件中操作的,现在想在一个文件夹中遍历好几百个结构相同的ACCESS文件导出其中的好几百个EXCEL,跪求这段代码的FOR 循环怎么写,


 

Top
朱先生 发表于:2016-02-04 10:23:02

好几百个上结构相同的文件是否存在规律,导出为一张EXCEL表还是好几百个EXCEL表



张素禄 发表于:2016-02-04 10:50:39
导出一张EXCEL,文件名可以按规律命名

朱先生 发表于:2016-02-04 11:36:40

合并的代码内容看过了吗,先用那种方法合并起来然后导出就行了



张素禄 发表于:2016-02-04 13:29:31
代码可以运行,但是得不到合并结果,就是说原来的文件没有变化,这5个数据库里的表没有进行合并。,我想还是尝试一下遍历多个ACCESS文件导出多个EXCEL吧。。。

朱先生 发表于:2016-02-04 14:25:45

看看这个效果

改一下路径



朱先生 发表于:2016-02-04 14:47:54

另一个答案

加了个直接将五个表导出的窗体



张素禄 发表于:2016-02-04 18:41:18
嗯嗯,现在可以了。。但是搞不懂为何合并MDB不成功呢

朱先生 发表于:2016-02-04 19:43:08
把你的合并代码让我看看

张素禄 发表于:2016-02-04 20:45:03
Sub 合并()
DoCmd.SetWarnings False
i = 1


For i = 1 To 5


DoCmd.RunSQL "insert into [;database=C:\Users\Administrator\Desktop\BBB\A.mdb].居民出行调查个人表  select * from [;database=C:\Users\Administrator\Desktop\BBB\" & ("A" & i) & ".mdb].居民出行调查个人表  "
Next i
DoCmd.SetWarnings True


MsgBox "ok", vbOKOnly, "提示"


  End Sub
就是有A1、A2、A3、A4、A5这5个数据库文件,每个ACCESS里面都有居民出行调查个人表这个表格,现在把这5个数据库里面的5张表格合并到同一文件夹里面的A数据库里面的居民出行调查个人表,就是总共有6个MDB文件。代码可以运行,但是并不进行合并操作,文件还是和原来一样


朱先生 发表于:2016-02-04 21:44:42
i = 1
For i = 1 To 5
DoCmd.RunSQL "insert into [;database=C:\Users\Administrator\Desktop\BBB\A.mdb].居民出行调查个人表  (个人编码) select * from [;database=C:\Users\Administrator\Desktop\BBB\" & ("A" & i) & ".mdb].居民出行调查个人表  "
Next i
DoCmd.SetWarnings True
MsgBox "ok", vbOKOnly, "提示"
  End Sub
红字是你贪污的

张素禄 发表于:2016-02-04 22:46:39

点击下载此附件

还是这样啊,不能得到合并结果。。。我也不懂为啥



朱先生 发表于:2016-02-05 01:06:58
再看这个吧

发了个图能看到啥????



朱先生 发表于:2016-02-05 01:18:16

 



朱先生 发表于:2016-02-05 13:45:06

用我的可表能执行吗?

换成你的表就无法运行的,问题还是出在表中,将DoCmd.SetWarnings False 、  DoCmd.SetWarnings TRUE   两句注释掉,就能看出问题了
慢慢寻找问题吧

开始我也碰到,被我处理掉了才可以进行合并的



张素禄 发表于:2016-02-05 21:38:00
已经把个人表都合并完了。。。但是在合并个人出行表的时候出现了“Microsoft Office Access 不能在追加查询中追加所有记录
Microsoft Office Access 设置1字段为Null是因为类型转换失败,它未将0记录添加到表是因为键值冲突,没有添加0记录是因为锁定冲突,没有添加0记录是因为有效性规则冲突。
是否执行动作查询?

如要忽略错误并执行查询,请单击“是””的提示,就不能继续合下去了。。。。

单个ACCESS文件中有个人表、个人出行表和家庭表三个表,个人表主键是个人编码;出行表主键是出行编码,出行表中也有个人编码这个字段,删除掉出行表中数据时候,在个人编码这一列会自动出现一个0.而且删不掉。。。。这个合并太难了啊



朱先生 发表于:2016-02-05 22:40:33

是将主键不设为主键 ,不能删

将工具栏的小钥匙按一下就行了,主键就不是主键了

单这一项处理了还不行,还会出现Microsoft Office Access 设置1字段为Null是因为类型转换失败,它未将0记录添加到表是因为键值冲突,没有添加0记录是因为锁定冲突,没有添加0记录是因为有效性规则冲突。是否执行动作查询?这个提示的 。      慢慢琢磨吧

反正个人表已合并完成,继续将另两个完成吧,离大功告成会越来越近的!!!!!!



张素禄 发表于:2016-02-06 16:31:22

已经大功告成了。。。

 For I = 1 To 207
                DoCmd.RunSQL "insert into [;database=C:\Users\Administrator\Desktop\a.Mdb].新表 select 居民出行调查个人出行表.*, 居民出行调查个人表.* from [;database=C:\Users\Administrator\Desktop\555\" & ("A" & I) & ".Mdb].居民出行调查个人表 INNER JOIN [;database=C:\Users\Administrator\Desktop\555\" & ("A" & I) & ".Mdb].居民出行调查个人出行表 ON [;database=C:\Users\Administrator\Desktop\555\" & ("A" & I) & ".Mdb].居民出行调查个人表.个人编码 = [;database=C:\Users\Administrator\Desktop\555\" & ("A" & I) & ".Mdb].居民出行调查个人出行表.个人编码  "


    Next
End Sub

这个代码是要实现每个数据库内的个人表和出行表合并生成新的表,但是运行时候说是语法错误,说”[;database=C:\Users\Administrator\Desktop\555\" & ("A" & I) & ".Mdb].居民出行调查个人表.个人编码“是无效的括号名称。。。我操作单个数据库的时候可以合并啊,批量合并的时候就不行了。。。



朱先生 发表于:2016-02-06 22:30:16

恭喜

张素禄 发表于:2016-02-07 09:34:02
朱先生祝你过年快乐!!!!

总记录:19篇  页次:1/1 9 1 :