无法closuresexcel进程的Application.Quit和令人不安的进程更新xls文件

我有一些问题与我的VBA代码在Access上运行并更新现有的Excel文件。 我必须为每个销售人员创buildxls文件,并通过将每月销售点的客户分组来通过从ODBC驱动程序连接到Oracle数据库的Access accdb文件导出数据来更新单元格。 我们有大约50个销售人员,每个销售人员必须创build2个文件。 所以,如果我不能解决这个问题,我将在我的电脑上有100个excel进程。 即使成功运行带有VBA的accdb,也可能会冻结。

问题:

  1. 不能通过Application.Quit来closuresExcel进程,我试图通过Excel.Application.Workbooks对象打开一个xls文件,它似乎被它的xls文件甚至我用过.Close SaveChanges:= True
  2. 不能重新处理VBA代码针对以前的Excel文件操作过程相同的文件原因留下,我确认它在任务pipe理器,我必须手动杀死过程每次。

请build议我解决这个问题。 我不是很专业的VBA开发,但我在互联网和MSDN网站search,我找不到任何好的解决scheme呢。 但是,如果你能帮助我。 我会赞赏它。

Option Compare Database Const TARGET_SHEET = "SalesObjectiveSheet" Const FILE_CREATION_WORK_FOLDER As String = "Work" Const DESTINATION_ROOTPATH As String = "C:\Users\Administrator\Desktop" Const TARGET_SHEET2 As String = "SalesObjectivesSheet" Const HEADING_LINE_POSITION As Integer = 3 Public objApp As Excel.Application Public objBooks As Excel.Workbooks Public objBook As Excel.Workbook Public objSheets As Excel.Worksheets Public objSheet As Excel.Worksheet Public Sub test200() Dim str As Boolean On Error GoTo Err_Handler strSalesName = "SalesName" strSalesOffice = "Tokyo" strTargetFolder = DESTINATION_ROOTPATH & "\" & FILE_CREATION_WORK_FOLDER strTargetFileName = "SalesObjectiveSheet_201708.xlsx" strTargetFullPath = strTargetFolder & "\" & strTargetFileName Set objApp = CreateObject("Excel.Application") Set objBook = objApp.Workbooks.Open(strTargetFullPath) Set objSheet = objBook.Worksheets(TARGET_SHEET2) If EditObjectSheetHeader(objSheet, objApp, objBook, _ objBooks, strSalesName, strSalesOffice, strTargetFileName) = False Then GoTo Err_Handler End If Exit_Handler: objApp.Quit Set objSheet = Nothing Set objBooks = Nothing Set objApp = Nothing Exit Sub Err_Handler: ' SysCmd acSysCmdRemoveMeter Resume Exit_Handler End Sub Function EditObjectSheetHeader(objSheet As Object, objApp As Object, objBook As Object, _ objBooks As Object, strSalesName, strSalesOffice, strTargetFileName) As Boolean Dim strProcedureName As String Dim strMonth As String On Error GoTo Err_Handler objSheet.Select objSheet.Activate strProcedureName = "EditObjectSheetHeader" EditObjectSheetHeader = False With objSheet.PageSetup .CenterHeader = "&14 " & "Month Sales Objectives" .RightHeader = "" & Chr(10) & "Sales Office:" & strSalesOffice & " Name:" & strSalesName .CenterFooter = "&P/&N" .PrintTitleRows = "$1:$" & HEADING_LINE_POSITION .LeftHeader = "" End With Exit_Handler: Workbooks(strTargetFileName).Close SaveChanges:=True ' Frozen after I run the VBA code once cause of previous & _ process use same file is existed it seems be. ' ActiveWorkbook.Close saveChanges:=True ' Frozen after I run the VBA code once cause of & _ previous process use same file is existed & _ (Object and With is not defined error) ' objBook.Close SaveChanges:=True ' Frozen after I run the VBA code once cause of & _ previous process use same file is existed & _ it seems be. ' ActiveWorkbook.Close SaveChanges:=True ' Error unknown. ' ThisWorkbook.Save 'Error 1004 unknown. EditObjectSheetHeader = True Exit Function Err_Handler: Select Case Err.Number Case 9 Debug.Print strProcedureName, Err.Number, Err.Description MsgBox Err.Description & " " & Err.Number, vbOKOnly, strProcedureName Case 70 Debug.Print strProcedureName, Err.Number, Err.Description MsgBox Err.Description & " " & Err.Number, vbOKOnly, strProcedureName Resume Case Else Debug.Print strProcedureName, Err.Number, Err.Description MsgBox Err.Description & " " & Err.Number, vbExclamation, strProcedureName End Select End Function 

在这里输入图像说明

释放引用后尝试放置objApp.Quit

 Set objSheet = Nothing Set objBooks = Nothing Set objApp = Nothing objApp.Quit