设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

Access引用Excel为何excel进程关不掉

[复制链接]
跳转到指定楼层
1#
发表于 2016-9-13 21:11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Access引用Excel为何excel进程关不掉
下面的附件是
在Access中引用Excel,生成excel数据透视表到工作表.
第一次运行一切正常,再次运行即出现错误.
查出出错原因是进程里还有excel程序
请大家帮忙看看.

  1. Private Sub CreatePivotTable_Click()

  2.     Dim XLA As New Excel.Application
  3.     Dim XLB As Workbook
  4.     Dim XLS As Worksheet
  5.     Dim PC As PivotCache
  6.     Dim PT As PivotTable
  7.     Dim rs As New ADODB.Recordset
  8.     Dim sSQL As String


  9.     Set XLA = CreateObject("Excel.Application")
  10.     Set XLB = Nothing
  11.     Set XLS = Nothing
  12.     Set XLB = XLA.Workbooks().Add

  13.     XLB.SaveAs CurrentProject.Path & "\PivotTable.xlsx"

  14.     Set XLS = XLB.Worksheets.Add
  15.     XLS.Name = "PivotSheet"
  16.     XLS.Activate

  17.     rs.CursorLocation = adUseClient

  18.     sSQL = "SELECT * FROM ORD"
  19.     rs.Open sSQL, CurrentProject.Connection, adOpenKeyset, adLockReadOnly

  20.     Set PC = ActiveWorkbook.PivotCaches.Create(xlExternal)
  21.     Set PC.Recordset = rs

  22.     Set PT = ActiveSheet.PivotTables.Add(PC, Range("A1"), "A")

  23.     With ActiveSheet.PivotTables("A")
  24.         .PivotFields("STYLE").Orientation = xlPageField
  25.         .PivotFields("PO").Orientation = xlRowField
  26.         .PivotFields("COLOR").Orientation = xlRowField
  27.         .PivotFields("pack").Orientation = xlRowField
  28.         .PivotFields("SIZE").Orientation = xlColumnField
  29.         .PivotFields("QUANTITY").Orientation = xlDataField
  30.     End With

  31.     rs.Close

  32.     XLB.Save

  33.     MsgBox "PivotTable Saved On " & CurrentProject.Path

  34.     Set PC = Nothing
  35.     Set PT = Nothing


  36.     Set rs = Nothing
  37.     Set XLB = Nothing
  38.     Set XLS = Nothing
  39.     Set XLA = Nothing
  40.     XLA.Quit '特意加上这句还是留住在进程里

  41. End Sub

复制代码


本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2016-9-13 21:15:42 | 只看该作者
Excel 也要调用自己的先关闭一下
然后先关闭 小的对象
再关闭大的对象
最后再设置 为nothing
3#
 楼主| 发表于 2016-9-13 21:18:36 | 只看该作者
tmtony 发表于 2016-9-13 21:15
Excel 也要调用自己的先关闭一下
然后先关闭 小的对象
再关闭大的对象

谢谢站长,我试试.
Excel 也要调用自己的先关闭一下
这句话的意思,是指?
4#
 楼主| 发表于 2016-9-13 21:27:53 | 只看该作者
我原来是生成好透视表,excel是可见的
然后,手工关闭excel
XLA.Visible = True
XLA.WindowState = xlMaximized
5#
发表于 2016-9-13 22:16:34 | 只看该作者
Private Sub CreatePivotTable_Click()

    Dim XLA As New Excel.Application
    Dim XLB As Workbook
    Dim XLS As Worksheet
    Dim PC As PivotCache
    Dim PT As PivotTable
    Dim rs As New ADODB.Recordset
    Dim sSQL As String


    Set XLA = CreateObject("Excel.Application")
    Set XLB = Nothing
    Set XLS = Nothing
    Set XLB = XLA.Workbooks().Add

    XLB.SaveAs CurrentProject.Path & "\PivotTable.xlsx"

    Set XLS = XLB.Worksheets.Add
    XLS.Name = "PivotSheet"
    XLS.Activate

    rs.CursorLocation = adUseClient
    sSQL = "SELECT style,po,color,pack,quantity FROM ORD"
    rs.Open sSQL, CurrentProject.Connection, adOpenKeyset, adLockReadOnly

    Set PC = XLA.ActiveWorkbook.PivotCaches.Create(xlExternal)
    Set PC.Recordset = rs

    Set PT = XLA.ActiveSheet.PivotTables.Add(PC, XLA.ActiveSheet.Range("A1"), "A")

    With XLA.ActiveSheet.PivotTables("A")
        .PivotFields("STYLE").Orientation = xlPageField
        .PivotFields("PO").Orientation = xlRowField
        .PivotFields("COLOR").Orientation = xlRowField
        .PivotFields("pack").Orientation = xlRowField
'      .PivotFields("SIZE").Orientation = xlColumnField
        .PivotFields("QUANTITY").Orientation = xlDataField
    End With

    rs.Close

    XLB.Save

    MsgBox "PivotTable Saved On " & CurrentProject.Path
    Set PC = Nothing
    Set PT = Nothing
    Set rs = Nothing
    Set XLS = Nothing

XLB.Close

    Set XLB = Nothing
    XLA.Quit
    Set XLA = Nothing

End Sub
6#
 楼主| 发表于 2016-9-14 01:00:15 | 只看该作者
liwen 发表于 2016-9-13 22:16
Private Sub CreatePivotTable_Click()

    Dim XLA As New Excel.Application

谢谢liwen版,可以了.
对excel这是一点不懂,没有方向.
7#
发表于 2016-9-14 12:24:49 | 只看该作者
Henry D. Sy 发表于 2016-9-14 01:00
谢谢liwen版,可以了.
对excel这是一点不懂,没有方向.


顺序上,应该是先关闭工作簿,再退出excel组件。最后再设置nothing,例如:
wkbkObj.close
exlObj.Quit
8#
 楼主| 发表于 2016-9-14 12:45:24 | 只看该作者
roych 发表于 2016-9-14 12:24
顺序上,应该是先关闭工作簿,再退出excel组件。最后再设置nothing,例如:
wkbkObj.close
exlObj.Qu ...

谢谢你
透视表生成完毕,excel是可见的,
然后在手工关闭的.
程序出现错误,除了顺序有点问题,
主要原因还是关键字"SIZE"引起的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 09:43 , Processed in 0.114594 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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