设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 6016|回复: 10
打印 上一主题 下一主题

[ADO/DAO] 数据导出后,控制EXCEL出现了问题

[复制链接]
跳转到指定楼层
1#
发表于 2014-11-13 15:08:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将ACCESS中的数据导出到EXCEL后,需要格式化导出的数据,只是在红字处,出现了错误,不知道怎么改了。请帮忙看看,该怎么改动。谢谢!

Sql = "SELECT * from 表"
rs.Open Sql, mydb, adOpenStatic, adLockReadOnly

If rs.EOF = False Then
    Set xlApp = CreateObject("Excel.Application")

    xlApp.Workbooks.Add
    xlApp.Visible = True
With xlApp
    For n1 = 0 To rs.Fields.Count - 1
         Set fld = rs.Fields(n1)
         xlApp.Cells(2, n1 + 1) = fld.Name
    Next
   .Range("a3").CopyFromRecordset rs
   
    Set rng = .Sheets("sheet1").Range("a1").CurrentRegion
    sAddress = rng.Address(0, 0)

    If rs.State = 1 Then rs.Close
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName   '''ThisWorkbook.FullName出现问题了
    Sql = "TRANSFORM sum(数量) SELECT 字段1,字段2 FROM [sheet1$ & " & sAddress & "] GROUP BY 字段1,字段2 PIVOT 字段1"  '''sheet1$这里也有错误
    rs.Open (Sql), cnn, adOpenKeyset, adLockReadOnly
end with

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
推荐
 楼主| 发表于 2014-11-13 15:58:03 | 只看该作者
这是我的小号 发表于 2014-11-13 15:44
第一个问题:请确认Excel版本是否2003的。第二个问题,正确的写法是: select * from [sheet1$A2:C1000], ...

谢谢回复。
1、office版本是2003的。2、这句sql语句是交叉表,提示不能用"select *"的。excel没有合并单元格的,字段类型是不同的,有文本、有数值。
回复 支持 1 反对 0

使用道具 举报

2#
发表于 2014-11-13 15:44:35 | 只看该作者
第一个问题:请确认Excel版本是否2003的。第二个问题,正确的写法是: select * from [sheet1$A2:C1000],而且第二行必须为表头,区域内不能有合并单元格,且每列字段类型必须一致。
4#
发表于 2014-11-13 16:21:39 | 只看该作者
贴附件看看吧。
5#
 楼主| 发表于 2014-11-13 16:22:47 | 只看该作者
我整理一下吧
6#
发表于 2014-11-13 19:25:19 | 只看该作者
set wkbook=xlApp.Workbooks.Add
....
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & wkbook.FullName   
7#
发表于 2014-11-13 19:30:25 | 只看该作者
本帖最后由 todaynew 于 2014-11-13 19:33 编辑

Sql = "TRANSFORM sum(数量) SELECT 字段1,字段2 FROM in " & wkbook.FullName & "![sheet1$!" & sAddress & "] GROUP BY 字段1,字段2 PIVOT 字段1"  
8#
 楼主| 发表于 2014-11-14 08:24:53 | 只看该作者
todaynew 发表于 2014-11-13 19:30
Sql = "TRANSFORM sum(数量) SELECT 字段1,字段2 FROM in " & wkbook.FullName & "![sheet1$!" & sAddress  ...

谢谢回复。这句sql语句提示:运行时错误'-2147217900(80040e14)':FROM子句语法错误。
现传上附件,请帮忙改改。



本帖子中包含更多资源

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

x
9#
发表于 2014-11-14 10:09:50 | 只看该作者
本帖最后由 todaynew 于 2014-11-14 10:33 编辑
kent_73 发表于 2014-11-14 08:24
谢谢回复。这句sql语句提示:运行时错误'-2147217900(80040e14)':FROM子句语法错误。
现传上附件,请帮 ...

Sql = "TRANSFORM sum(数量) SELECT 字段1,字段2 FROM [sheet1$!" & sAddress & "] in " & wkbook.FullName & " GROUP BY 字段1,字段2 PIVOT 字段1"
其实有个更简单的办法,是将Excel表的数据区域命名,由于这个命名在表中是唯一的,所以可以直接引用,且与sheet无关。

比如,假设这个区域命名为data,则sql语句可写为:
Sql = "TRANSFORM sum(数量) SELECT 字段1,字段2 FROM data$ in " & wkbook.FullName & " GROUP BY 字段1,字段2 PIVOT 字段1"
或者
Sql = "TRANSFORM sum(数量) SELECT 字段1,字段2 FROM [Excel 8.0;DATABASE=" & wkbook.FullName & ".data$  GROUP BY 字段1,字段2 PIVOT 字段1"
10#
 楼主| 发表于 2014-11-14 10:32:11 | 只看该作者
todaynew 发表于 2014-11-14 10:09
Sql = "TRANSFORM sum(数量) SELECT 字段1,字段2 FROM [sheet1$!" & sAddress & "] in " & wkbook.FullNa ...

还是有错的。

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 20:37 , Processed in 0.104120 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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