ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] access 能够实现这个效果

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-8-26 10:28 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 cekous 于 2011-8-26 10:29 编辑

NA.rar (13.88 KB, 下载次数: 16)
姓名
销量
张珊
1
张珊
2
李四
13
李四
23

我有一张ACCESS的Query1 ,如上表所示
通过怎么操作可以达到如下效果?

姓名
销量
张珊
1
张珊
2

导出到excel ,文件命名为 张珊.xls

姓名
销量
李四
13
李四
23
导出到另一个excel ,文件命名为 张珊.xls

TA的精华主题

TA的得分主题

发表于 2011-8-26 13:04 | 显示全部楼层
一次性导出多个文件,需要用VBA了

TA的精华主题

TA的得分主题

发表于 2011-8-26 13:20 | 显示全部楼层
  1. Sub test()
  2.    
  3.     DoCmd.OutputTo acOutputQuery, "Query1", "*.xls", "F:\门店会计工作规划\Test.xls"
  4.    
  5. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-26 15:01 | 显示全部楼层
zhangjimfu 发表于 2011-8-26 13:20

姓名        销量
张珊        1
张珊        2
李四        13
李四        23

只能导出到一个文件里面

TA的精华主题

TA的得分主题

发表于 2011-8-26 15:54 | 显示全部楼层
  1. Sub OutputExcel(FileName As String)
  2.     Dim myPath$, pathFile$
  3.     myPath = CurrentDb.Name
  4.     pathFile = Left(myPath, VBA.InStrRev(myPath, "")) & FileName & ".xls"
  5.     DoCmd.OutputTo acOutputQuery, "Query2", "*.xls", pathFile
  6. End Sub

  7. Sub qryTest(PersonnelName As String)
  8.     Dim dbs As Database, sql$
  9.     sql = "Select * From NA Where 姓名='" & PersonnelName & "'"
  10.     Set dbs = CurrentDb
  11.     dbs.QueryDefs("Query2").sql = sql
  12.     dbs.Close
  13. End Sub

  14. Sub OutputMain()
  15.     Dim cnn, rst, sql$
  16.     Set cnn = CreateObject("ADODB.Connection")
  17.     Set rst = CreateObject("ADODB.Recordset")
  18.     cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & CurrentDb.Name
  19.     sql = "Select distinct 姓名 From NA"
  20.     Set rst = cnn.Execute(sql)
  21.     While Not rst.EOF
  22.         Call qryTest(rst("姓名").Value)
  23.         Call OutputExcel(rst("姓名").Value)
  24.         rst.MoveNext
  25.     Wend
  26.     cnn.Close
  27.     Set cnn = Nothing
  28.     Set rst = Nothing
  29. End Sub
复制代码
NA.rar (25.18 KB, 下载次数: 21)

详见附件!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-26 16:04 | 显示全部楼层
zhangjimfu 发表于 2011-8-26 15:54
详见附件!

谢谢!真厉害就是感觉有点像EXCEL 写出来的VBA了~

要是能够简化就好了~
Set cnn=CreateObject 这种东西去掉就好了

我看到有人实现用field(0)的方式实现 导出第一列数据

TA的精华主题

TA的得分主题

发表于 2011-8-26 16:11 | 显示全部楼层
像什么并不重要,重要的是能解决问题啊,呵呵....
方法肯定还有多种,我也同样期待高手的解答

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-26 16:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhangjimfu 发表于 2011-8-26 16:11
像什么并不重要,重要的是能解决问题啊,呵呵....
方法肯定还有多种,我也同样期待高手的解答

在UMV平台中,我们除了可以用平台自带的功能实现把查找到的数据导出到EXCEL中外,我们也可以建一查询窗体,添加一命令按钮,在CLICK事件中,加入下列代码,实现导出功能。

Private Sub cmd导出_Click()
'这里将使用DAO来改变查询的SQL语句,必须先在“工具”→“引用”中选择
'Microsoft DAO 3.6 Object Library.
'================================
    Dim qdf As DAO.QueryDef    'qdf被定义为一个查询定义对象
    Dim strWhere, strSQL As String
    strWhere = Me.ChildForm.Form.Filter
    If strWhere = "" Then    '没有条件
        strSQL = "Select * FROM qryCgmxData"    '根据实际情况修改
    Else    '有条件
        strSQL = "Select * FROM qryCgmxData where " & strWhere
    End If
    Set qdf = CurrentDb.QueryDefs("qryXlsData")
    qdf.sql = strSQL
    qdf.Close
    Set qdf = Nothing
    DoCmd.OutputTo acOutputQuery, "qryXlsData", acFormatXLS, , True
End Sub

注意事项:

1、必须事先在系统中添加一名称为“qryXlsData"的查询,内容不限。

2、上面代码中的strSQL根据实际情况自定义。

TA的精华主题

TA的得分主题

发表于 2011-8-26 16:27 | 显示全部楼层
cekous 发表于 2011-8-26 16:11
在UMV平台中,我们除了可以用平台自带的功能实现把查找到的数据导出到EXCEL中外,我们也可以建一查询窗体 ...

如果用窗体导出,那就省事多了

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-26 16:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你会做窗口导出?教教我!我也在研究中。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 05:23 , Processed in 0.026792 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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