简体   繁体   English

通过 Access 2003 VBA 创建 pivot 表后 Excel 后台进程未关闭

[英]Excel background process not close after create pivot table by Access 2003 VBA

I want to create a pivot table with Access 2003 into Excel.我想在 Excel 中创建一个带有 Access 2003 的 pivot 表。 Now I can create a pivot table but background process excel is not close.现在我可以创建一个 pivot 表,但后台进程 excel 不关闭。 Results my program can run only once time.结果我的程序只能运行一次。 I want to know how to close Excel background process.我想知道如何关闭 Excel 后台进程。

My code:我的代码:

    Dim lRET            As Integer
    Dim lEXCEL_OBJ      As Excel.Application
    Dim lWKB            As Excel.Workbook
    Dim lSHEET          As Excel.Worksheet
    Dim lSHEET2         As Excel.Worksheet
    Dim lFILEFULLNAME   As String
    Dim lTEMPLATEFILE   As String
    Dim lTEMPLATEPATH   As String
    Dim lBUTTON         As String
    
    Dim PTcache         As Excel.PivotCache
    Dim PT              As Excel.PivotTable
    
    Dim PRange          As Range
    Dim LastRow         As Long
    Dim LastCol         As Long
    
    Const lFILE         As String = "template_macro2.xlt"
      
    On Error GoTo EXCEL_RESULT_T_ERROR
    
    lTEMPLATEPATH = "C:\Temp\" & lFILE
    
    lTEMPLATEFILE = Dir(lTEMPLATEPATH)
       
    Set lEXCEL_OBJ = CreateObject("Excel.Application")
    Set lWKB = lEXCEL_OBJ.Workbooks.Add(lTEMPLATEPATH)
      
    With lEXCEL_OBJ
        Set lWKB = .Workbooks.Add(lTEMPLATEPATH)
        Set lSHEET = .ActiveWorkbook.Sheets(1)
    End With
    
    With lEXCEL_OBJ
      lWKB.Worksheets.Add
      lWKB.ActiveSheet.Name = "test1"
      Set lSHEET = .ActiveSheet
    End With
                    
    With lSHEET
        .Range("a:z").ColumnWidth = 10
        .Range("b:b").ColumnWidth = 22
        .Range("m:m").ColumnWidth = 24
        .Range("q:q").ColumnWidth = 50
        .Range("u:u").ColumnWidth = 15
    End With
    
    'add raw data in excel
    Call MAKE_EXPORT_TABLE_DO_OR(lSHEET)
      
    With lEXCEL_OBJ
        lWKB.Sheets("Sheet1").Select
        lWKB.Worksheets.Add
        lWKB.ActiveSheet.Name = "test2"
        Set lSHEET2 = .ActiveSheet
        
        'Define Data Range
        LastRow = lSHEET.Cells(lSHEET.Rows.COUNT, 1).End(-4162).Row
        LastCol = lSHEET.Cells(1, lSHEET.Columns.COUNT).End(-4159).Column
        Set PRange = lSHEET.Cells(1, 1).Resize(LastRow, LastCol)

        'Create a Pivot Cache
        Set PTcache = ActiveWorkbook.PivotCaches.Add(xlDatabase, PRange)

        'Create the Pivot Table from the Cache
        Set PT = PTcache.CreatePivotTable(TableDestination:=Sheets("test2").Cells(1, 1))
    End With
    
    lWKB.SaveAs hFULLPATH

    EXCEL_RESULT_T_EXIT:
       On Error Resume Next
       lWKB.Close
       PT.Application.Quit
       lEXCEL_OBJ.Application.Quit
       Set lWKB = Nothing
       Set lEXCEL_OBJ = Nothing
       Application.Echo True
       DoCmd.Hourglass False
       Exit Function

    EXCEL_RESULT_T_ERROR:
        Resume EXCEL_RESULT_T_EXIT

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM