2017-01-26 2 views
0

Я написал код, который открывает файл excel и читает определенное поле. Проблема в том, что каждый раз, когда я запускаю этот код, в фоновом режиме запускается процесс excel, пользователь его не видит, но когда вы запускаете Диспетчер задач, вы видите процесс excel. Я хочу закрыть этот фоновый процесс с помощью VBA. Я уже пробовал много разных вещей, но ничего действительно не функционирует. Я уже пробовал:Доступ останавливает фоновый процесс excel с vba

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

Кто-нибудь знает, как закрыть excel с помощью vba?

 `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` 
+0

можно ответить здесь ... http://stackoverflow.com/questions/18738677/vba-application-quit-command-not-closing-the-entire-excel-application – Aeneas

+0

Возможные дубликат команды [VBA Application.Quit, не закрывающей все приложение Excel] (http://stackoverflow.com/questions/18738677/vba-application-quit-command-not-closing-the-entire-excel-application) – Bugs

+0

I попробовали оба решения, но они не устранили проблему –

ответ

0

Если у вас уже есть процесс 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 
Смежные вопросы