设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 4883|回复: 5
打印 上一主题 下一主题

Access引用Excel创建数据透视表错误

[复制链接]
跳转到指定楼层
1#
发表于 2016-9-12 08:41:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Henry D. Sy 于 2016-9-12 08:43 编辑

由于新版Access已经不支持数据透视表
所以想在Access中直接操作Excel生成l数据透视表
(不是将表数据导出到Excel,然后在Excel创建)

过程运行到注释处错误,请大家帮忙指点一下.

  1. Private Sub CreatePivotTable_Click()

  2.     Dim XLApp As Excel.Application
  3.     Dim XLB As Workbook
  4.     Dim XLS As Worksheet
  5.     Dim PC As PivotCache
  6.     Dim PT As PivotTable
  7.     Dim sSQL As String

  8.     sSQL = "SELECT STYLE,PO,SIZE,COLOR,QUANTITY FROM ORD"

  9.     Set XLApp = CreateObject("Excel.Application")

  10.     Set XLB = XLApp.Workbooks().Add
  11.     XLB.SaveAs CurrentProject.Path & "\A.xlsx"

  12. Set PC = ActiveWorkbook.PivotCaches.Add(xlExternal)
  13.     Set PC.Recordset = CurrentDb.OpenRecordset(sSQL)            '到此处出现错误1004
  14.     Worksheets.Add
  15.     ActiveSheet.Name = "PivotSheet"
  16.     ActiveWindow.DisplayGridlines = False

  17.     Set PT = ActiveSheet.PivotTables.Add(PC, Range("A1"), "MyPivot")

  18.     With PT
  19.         .PivotFields("STYLE").Orientation = xlPageField
  20.         .PivotFields("PO").Orientation = xlRowField
  21.         .PivotFields("COLOR").Orientation = xlRowField
  22.         .PivotFields("SIZE").Orientation = xlColumnField
  23.         .PivotFields("QUANTITY").Orientation = xlDataField
  24.         .DataPivotField.Orientation = xlRowField
  25.     End With

  26. XLB.Save
  27.     XLApp.Visible = True

  28.     Set XLApp = Nothing
  29.     Set XLB = Nothing
  30.     Set XLS = Nothing
  31. End Sub
复制代码



本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2016-9-12 17:23:30 | 只看该作者
回头再看看,数据透视表不太熟。
3#
 楼主| 发表于 2016-9-12 19:18:50 | 只看该作者
roych 发表于 2016-9-12 17:23
回头再看看,数据透视表不太熟。

谢谢你,
问题自己解决了,忘了设定游标为客户端.
4#
发表于 2016-9-13 11:19:21 | 只看该作者
Henry D. Sy 发表于 2016-9-12 19:18
谢谢你,
问题自己解决了,忘了设定游标为客户端.

PC.Recordset.CursorLocation =adUseClient?
大概是这个了。一般可以先判断能不能读取recordcount,如果读取为-1,往往是这个问题。前面讲recordset时,跟阿航讨论过这个问题。
5#
 楼主| 发表于 2016-9-13 12:12:18 | 只看该作者
roych 发表于 2016-9-13 11:19
PC.Recordset.CursorLocation =adUseClient?
大概是这个了。一般可以先判断能不能读取recordcount,如 ...

在打开记录集之前,设定游标,因为此时游标属性为读写,
而记录集打开之后,该属性为只读
-----------------------
rs.CursorLocation =adUseClient
rs.Open sSQL..................
-----------------------------


6#
发表于 2023-2-27 08:56:50 | 只看该作者
Henry D. Sy 发表于 2016-9-13 12:12
在打开记录集之前,设定游标,因为此时游标属性为读写,
而记录集打开之后,该属性为只读
---------------- ...

Henry D. Sy老师您好!您这个例子能否分享一下正确的,我目前也为access透视表问题发愁呢?谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-27 13:50 , Processed in 0.090963 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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