设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 8097|回复: 8

从Access导入数据到Excel的问题

[复制链接]
发表于 2008-5-17 23:15:13 | 显示全部楼层 |阅读模式
使用Microsoft Query,从Access导入数据到Excel。
要求:能在Excel中输入日期,比如是2008-01-01、2008-01-02,根据日期从access的datesum表中提取数据。
问题:Microsoft Query记录文件目录,导致拷贝到别的机器上必须使用相同的盘和目录才行,比如附件必须在F盘下才能运行。

有没有解决办法?请各位DX指教。(用别的办法实现也可以)



具体详见附件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2008-5-18 11:17:11 | 显示全部楼层
原帖由 ddtkld 于 2008-5-17 23:15 发表
使用Microsoft Query,从Access导入数据到Excel。
要求:能在Excel中输入日期,比如是2008-01-01、2008-01-02,根据日期从access的datesum表中提取数据。
问题:Microsoft Query记录文件目录,导致拷贝到别的机器上 ...


能在Excel中输入日期 ?  (还是在查询中输入日期)
 楼主| 发表于 2008-5-18 22:05:24 | 显示全部楼层
在Excel中输入日期,作为SQL语句的条件之一,到Access数据库中查询,将结果返回Excel
 楼主| 发表于 2008-5-18 22:37:34 | 显示全部楼层
谢谢版主,我再把问题重写一下吧。

关于如何实现在Excel中读入Access数据的问题
比如:
根据Excel的sheet1的A1单元格的值(对应于OrderID),从Access文件"订货.mdb“中的Order表中读数据。还要实现每次改变A1的值,就刷新数据。
Order表的格式如下:
OrderID OrderDate GoodsID GoodsNum
1 2008-1-1 1 10
2 2008-1-1 4 40
3 2008-1-2 2 20
4 2008-1-3 3 30
查询语句如下:
SELECT OrderID, OrderDate, GoodsID, GoodsNum FROM Order
WHERE OrderID = A1
如何用最简单的办法实现?请各位DX指点。
另外,要求能拷贝到别的机器上运行(Access文件与Excel文件在同一文件夹中)
(我试过使用MICROSOFT QUERY能实现动态查询,但无法拷贝到别的目录去运行)
发表于 2008-5-19 12:46:35 | 显示全部楼层
Private Sub Workbook_Open()
On Error Resume Next
'    a = "SELECT `js$`.所属变电站, `js$`.柜线编号, `js$`.所属柜线, Sum(iif(`js$`.备注='专用 ',1,0)) AS '专用数量', Sum(iif(`js$`.备注='专用 ',`js$`.shiyrl,0)) AS '专用总容量', Sum(iif(`js$`.备注='公用 ',1,0)) AS '公用数量', Sum(iif(`js$`.备注='公用 ',`js$`.shiyrl,0)) AS '公用总容量', Count(`js$`.备注) AS '总数量', Sum(`js$`.shiyrl) AS '总容量' FROM `" & Left(ThisWorkbook.FullName, Len(ThisWorkbook.FullName) - 4) & "`.`js$` `js$` GROUP BY `js$`.所属变电站, `js$`.柜线编号, `js$`.所属柜线"
'With ActiveSheet.QueryTables.Add(Connection:= _
        "ODBC;DSN=Excel Files;DBQ=" & ThisWorkbook.FullName & ";DefaultDir=" & ThisWorkbook.Path & ";DriverId=790;MaxBufferSize=2048;PageTimeout=5;", Destination:=Range("A1"))
'        .CommandText = a 'Array(a)
'        .Refresh BackgroundQuery:=False
'End With

For i = 0 To ActiveSheet.QueryTables.Count
Debug.Print ActiveSheet.QueryTables.Item(i).Name
Next
Debug.Print ActiveSheet.QueryTables.Item(1).CommandText
Debug.Print ActiveSheet.QueryTables.Item("ExternalData_1").Connection

End Sub


查询的链接和Sql语句可以动态更改,按你这种情况,也就是需要更改查询的链接Connection语句。
 楼主| 发表于 2008-5-19 22:38:35 | 显示全部楼层
谢版主。本人是Excel编程新手,请问有没有关于从Excel访问数据库的说明?
我找到一些,但针对性不强。
有好资料,我是有信心学好的。[:50]

[ 本帖最后由 ddtkld 于 2008-5-19 22:55 编辑 ]
发表于 2008-5-22 14:04:30 | 显示全部楼层
http://www.office-cn.net/vvb/thread-57563-1-1.html
(EXCEL VBA开发工资管理系统范例详解)
这个是从EXCEL里访问ACCESS数据库的示例
发表于 2008-5-22 15:12:23 | 显示全部楼层
针对你的问题其实就一句,更改链接语句
Private Sub Workbook_Open()
Sheets("sheet1").QueryTables.Item("导入access数据").C & ThisWorkbook.Path & "\update_from_select.mdb;DefaultDir=" & ThisWorkbook.Path & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
'下面这两句只需用一次,也就是说编辑好之后其实就不用了
'a = "SELECT DateSum.OrderDate, DateSum.DateMoney  FROM DateSum DateSum WHERE (DateSum.OrderDate=?)"
'Sheets("sheet1").QueryTables.Item(1).CommandText = a
End Sub

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2008-5-22 23:18:21 | 显示全部楼层
感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-3-29 14:12 , Processed in 0.090483 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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