【问题标题】:Access stops background process of excel with vbaAccess使用vba停止excel的后台进程
【发布时间】:2017-01-26 14:35:58
【问题描述】:

我编写了一个代码,可以打开一个 excel 文件并读取一个特定的字段。问题是每次我执行这段代码时,在后台启动一个excel进程,用户看不到它,但是当你启动任务管理器时,你会看到一个excel进程。我想用 VBA 关闭这个后台进程。我已经尝试了很多不同的东西,但没有任何真正的功能。我已经试过了:

wb.Close
xcelapp.Application.Quit
Set excelapp = Nothing
Set wb = Nothing

有人知道如何用vba关闭excel吗?

      `Private Sub Command46_Click()
    Dim wert As String

    Dim sfdcID As String
    Dim excelapp As Object
    Dim wb As Object

    wbName = Combo39.Column(0)
    Pfad = "C:\Users\XXXXXX
    Details = "Delivery Input"

    'Open excel
    Set excelapp = CreateObject("excel.application")
    Set wb = excelapp.Workbooks.Open(Pfad)

    'read SFDC Opportunity ID
    Workbooks(wbName).Sheets(Details).Select
    Cells.Find(What:="COMPASS WBS ID").Activate
    ActiveCell.Offset(1, 0).Select
    sfdcID = Selection
    MsgBox sfdcID     

    End Sub`

【问题讨论】:

标签: excel vba ms-access background-process


【解决方案1】:

如果您已经运行了一个 Excel 进程,您的代码将添加另一个。 试试这个:

Sub OpenAndCloseExcel()
    Dim XL As Object        'Excel.Application
    Dim WB As Object        'Excel.Workbooks

    Set XL = GetExcel()

        '... do your thing 

    XL.Quit
    Set XL = Nothing
End Sub

'****************************************
'* Get an Excel instance
'*
Function GetExcel() As Object
    Dim XL As Object        'Excel.Application

    On Error Resume Next

    Set XL = GetObject(, "Excel.Application")
    If XL Is Nothing Then Set XL = CreateObject("Excel.Application")
    Set GetExcel = XL  
End Function

【讨论】: