設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 5163|回復(fù): 7
打印 上一主題 下一主題

Access引用Excel為何excel進(jìn)程關(guān)不掉

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2016-9-13 21:11:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
Access引用Excel為何excel進(jìn)程關(guān)不掉
下面的附件是
在Access中引用Excel,生成excel數(shù)據(jù)透視表到工作表.
第一次運(yùn)行一切正常,再次運(yùn)行即出現(xiàn)錯(cuò)誤.
查出出錯(cuò)原因是進(jìn)程里還有excel程序
請大家?guī)兔纯?

  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 '特意加上這句還是留住在進(jìn)程里

  41. End Sub

復(fù)制代碼


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱

點(diǎn)擊這里給我發(fā)消息

2#
發(fā)表于 2016-9-13 21:15:42 | 只看該作者
Excel 也要調(diào)用自己的先關(guān)閉一下
然后先關(guān)閉 小的對象
再關(guān)閉大的對象
最后再設(shè)置 為nothing
3#
 樓主| 發(fā)表于 2016-9-13 21:18:36 | 只看該作者
tmtony 發(fā)表于 2016-9-13 21:15
Excel 也要調(diào)用自己的先關(guān)閉一下
然后先關(guān)閉 小的對象
再關(guān)閉大的對象

謝謝站長,我試試.
Excel 也要調(diào)用自己的先關(guān)閉一下
這句話的意思,是指?
4#
 樓主| 發(fā)表于 2016-9-13 21:27:53 | 只看該作者
我原來是生成好透視表,excel是可見的
然后,手工關(guān)閉excel
XLA.Visible = True
XLA.WindowState = xlMaximized
5#
發(fā)表于 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#
 樓主| 發(fā)表于 2016-9-14 01:00:15 | 只看該作者
liwen 發(fā)表于 2016-9-13 22:16
Private Sub CreatePivotTable_Click()

    Dim XLA As New Excel.Application

謝謝liwen版,可以了.
對excel這是一點(diǎn)不懂,沒有方向.
7#
發(fā)表于 2016-9-14 12:24:49 | 只看該作者
Henry D. Sy 發(fā)表于 2016-9-14 01:00
謝謝liwen版,可以了.
對excel這是一點(diǎn)不懂,沒有方向.


順序上,應(yīng)該是先關(guān)閉工作簿,再退出excel組件。最后再設(shè)置nothing,例如:
wkbkObj.close
exlObj.Quit
8#
 樓主| 發(fā)表于 2016-9-14 12:45:24 | 只看該作者
roych 發(fā)表于 2016-9-14 12:24
順序上,應(yīng)該是先關(guān)閉工作簿,再退出excel組件。最后再設(shè)置nothing,例如:
wkbkObj.close
exlObj.Qu ...

謝謝你
透視表生成完畢,excel是可見的,
然后在手工關(guān)閉的.
程序出現(xiàn)錯(cuò)誤,除了順序有點(diǎn)問題,
主要原因還是關(guān)鍵字"SIZE"引起的
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機(jī)版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 06:32 , Processed in 0.140834 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表