|
54 / 0 / 0
Регистрация: 18.02.2015
Сообщений: 12
|
||||||
"Висящий" процесс Excel.exe20.10.2015, 14:22. Показов 2743. Ответов 8
Метки нет (Все метки)
Доброго времени суток, господа!
Возник следующий вопрос... Ситуация: запускаем свежеиспеченный прожект.ехе, жмякаем по кнопочке, программа обрабатывает файл формата .xls, производит необходимые подсчеты, вносит данные в этот файл, сохраняет и закрывает его. Пробелма в следующем, при любом раскладе всегда остается "висящим" процесс excel.exe, который завершается только после того, как будет закрыта сама программа прожект.ехе. Как можно закрыть этот процесс, не завершая работу прожект.ехе (все бы ничего, да вот только этот процесс не позволяет запускать другие файлы формата .xls, они просто зависают при запуске - если запускать эти файлы самостоятельно, напрямую через офис эксель) файлы .xls открываются и закрываются следующим образом:
п.с.с. команда Application.Quit - не помогает убить процесс. Спасибо за советы\подсказки!!!
0
|
||||||
| 20.10.2015, 14:22 | |
|
Ответы с готовыми решениями:
8
CreateObject("Excel.Application"), процесс Excel продолжает висеть в диспетчере, когда это уже не нужно Завершить процесс explorer.exe
|
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|||||||
| 20.10.2015, 14:30 | |||||||
|
Тогда туда же
0
|
|||||||
|
54 / 0 / 0
Регистрация: 18.02.2015
Сообщений: 12
|
|
| 20.10.2015, 14:37 [ТС] | |
|
Да, они же ведь работают благодаря подключенной библиотеке Microsoft Excel 12.0 Object Library?
Workbooks.open - открывает книгу ActiveWorkbook.Close - закрывает книгу Application.Quit - закрывает само приложение Excel а процесс не убивается...только вместе с закрытием прожект.ехе п.с. Ситуацию необходимо как то разрулить, т.к. нужно во время процесса работы прожект.ехе открыть отдельно через сам эксель самостоятельно другие файлы, чтобы оттуда брать данные и вставлять в прожект.ехе при запросах ввода. ( а этот процесс не позволяет запускать эксель, файлы просто напросто зависают при открытии)
0
|
|
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|||||||||||
| 20.10.2015, 15:05 | |||||||||||
|
Robocoper, Да, проверил - действительно работает. Дело в том, что при таком подходе неявно создается объект Excel.Application, который "живет" до конца жизни проекта. А если объявить и создать его явно, появляется возможность "убить" этот объект когда Вам нужно:
Или без переменной
1
|
|||||||||||
|
54 / 0 / 0
Регистрация: 18.02.2015
Сообщений: 12
|
||||||
| 20.10.2015, 15:59 [ТС] | ||||||
|
Попробовал первый способ через объявление переменнной, по-прежнему процесс не убивает, всё так же работает как и было, за исключением следующего:
вылетает при повторном вызове процедуры(повторном нажатии на кнопку запуска процедуры). п.с. в процедуре открывается сначала одна книга, потом она закрывается, потом открывается вторая, и только потом я "убиваю" приложение. Если убить его между книгами, после закрытия первой и перед открытием второй, то ошибка, которая на картинке выше, выскочет при первом запуске процедуры... строка кода на которую ругается:
0
|
||||||
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||||||||||||
| 20.10.2015, 18:15 | ||||||||||||||||
Сообщение было отмечено Robocoper как решение
Решение
Robocoper, здесь опять "бесхозные" объекты - Cells, для которых VB, видимо, устанавливает свою связь с родительским объектом, а для этого хранит неявную ссылку на него. Попробуйте так
Объекты позднего связывания до сих пор закрывались без проблем.
2
|
||||||||||||||||
|
54 / 0 / 0
Регистрация: 18.02.2015
Сообщений: 12
|
||||||
| 21.10.2015, 10:01 [ТС] | ||||||
|
Казанский, помогло! спасибо огромное!
А вот еще такой вопрос, если на компьютере не установлен офис вообще, программа сможет работать с файлами .xls формата?(с подключенной библиотекой Microsoft Excel 12.0 Object Library или через объявление
Вопрос возможно глупый но все же спасибо за ответ..
0
|
||||||
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||
| 21.10.2015, 10:16 | ||
|
И если Вы подключаете библиотеку Microsoft Excel 12.0 Object Library, программа будет искать библиотеку именно этой версии. Если на компе будет установлен Офис другой версии (особенно более ранней), программа может не заработать. В этом смысле позднее связывание (Set xlApp = CreateObject("excel.application")) более универсально, программа заработает хоть с Офис97 - если, конечно, не пытаться открывать файлы xlsx и не использовать свойства и методы, которые появились в более поздних версиях Excel.
1
|
||
|
54 / 0 / 0
Регистрация: 18.02.2015
Сообщений: 12
|
|||||||||||||||||||||||||||||||
| 21.10.2015, 14:26 [ТС] | |||||||||||||||||||||||||||||||
|
Казанский, спасибо! Будем работать дальше
![]() Добавлено через 1 час 52 минуты Возникла вот такая ошибка... В этом случае максимальное кол-во используемых строк в файле определяется адекватно, 55 штук к примеру
п.с. в процессе работы получается так, что во втором случае программа видит пустой лист, хотя на самом деле данные в нем есть, почему так происходит не понятно... даже если проверить через msgbox
на первом(начальном листе) заполнена только первая строка, а на втором( на который происходит переключение) 55 строк, на деле выходит что программа не хочет переключаться на другой лист, поэтому и выдает значение = 1 непонятно как то.
0
|
|||||||||||||||||||||||||||||||
| 21.10.2015, 14:26 | |
|
Помогаю со студенческими работами здесь
9
Не закрывает процесс Excel.exe не закрывается процесс excel.exe
Не могу закрыть процесс excel.exe (не стандартная ситуация) Почему процесс EXCEL.EXE висит даже после уничтожения его переменных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|