Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Закрытие экземпляра

Автор вопроса: ProtoVBОтветов: 1

Я вызываю объекты Excel из MS Access, и мне не удается закрыть экземпляр!

Можно было бы подумать, что рабочие книги закрыты, потому что мы их больше не видим, но в диспетчере задач -> Процессы у меня все еще работает EXCEL.EXE * 32...

Вот что у меня есть:

Dim xlApp as Excel.Application
Dim wbks as Workbooks


    Set xlApp = GetObject("", "Excel.Application")
    Set wbks = xlApp.Workbooks
    wbks.Open "C:\blp\api\Office Tools\BloombergUI.xla"
    wbks("BloombergUI.xla").RunAutoMacros (xlAutoOpen)

    wbks.Add
    xlApp.Visible = True

...выполняет действия...

xlApp.Workbooks(1).SaveAs FileName:=strFullPath, FileFormat:=xlCSV

    xlApp.Application.DisplayAlerts = False
    xlApp.Workbooks("BbgDivData.csv").Close SaveChanges:=True
    wbks("BloombergUI.xla").Close

    xlApp.Quit
    Set xlApp = Nothing

Есть идеи, почему он все еще там? Я подозреваю, что надстройка все испортит!

  • wbks.Add, возможно, создает второй экземпляр Excel? Попробуйте явно создать новый объект Excel и создать в нем новую книгу для своих действий, а затем вызвать .quit для обоих. Alan Waage 05.12.2013
  • Я склонен согласиться с вашими подозрениями, хотя, возможно, стоит пройтись по вашему коду в режиме отладки и посмотреть, что происходит в экземплярах диспетчера задач re excel на каждом этапе. John Bingham 06.12.2013
  • возможный дубликат Удалить задачу Excel из задачи менеджер после запуска из Access с помощью VBA RubberDuck 29.12.2014

instanceexcelvbaadd-inms-access

Ответы

Ответ 1 · рейтинг 1 · pteranodon

Вы никогда явно не устанавливаете для набора книг ничего, вы просто вызываете close из одного члена. Я бы попробовал добавить:

Set wbks = Nothing

после Close и до Quit.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы