Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[44.192.16.116] |
|
Сообщ.
#1
,
|
|
|
Текущая ситуация:
Dim oExcelApp As New Excel.Application 'Приложение. Dim oDocExcel As New Excel.Workbook 'Документ Excel. Dim oExWs As New Excel.Worksheet 'Таблица документа Excel. Set oExcelApp = New Excel.Application oExcelApp.Visible = False Set oDocExcel = oExcelApp.Workbooks.Open(g_oCommonDialog.FileName, , True) Set oExWs = oDocExcel.ActiveSheet ... Call oDocExcel.Close(False) Call oExcelApp.Quit If Not oExWs Is Nothing Then Set oExWs = Nothing If Not oDocExcel Is Nothing Then Set oDocExcel = Nothing If Not oExcelApp Is Nothing Then Set oExcelApp = Nothing Но есть проблема. Если пользователю приспичит открыть какой-нибудь документ Excel - он откроется именно в этом процессе. И если пользователь закроет Excel - уничтожится и процесс - все поломается. То есть, Visible = false - не спасение. Как заблочить Excel.exe от внешнего вмешательства? |
Сообщ.
#2
,
|
|
|
Workspace
|
Сообщ.
#3
,
|
|
|
Цитата Akina @ Нужно подробнее. |
Сообщ.
#4
,
|
|
|
Подробнее в MSDN. Писать романы с планшета неудобно. И лениво.
|
Сообщ.
#5
,
|
|
|
Цитата Сергей85 @ То есть, Visible = false - не спасение. Как заблочить Excel.exe от внешнего вмешательства? Interactive = false ? |
Сообщ.
#6
,
|
|
|
Неа.
27 Set oExcelApp = New Excel.Application 28 oExcelApp.Visible = False oExcelApp.IgnoreRemoteRequests = True Добавлено Цитата leo @ Добавлено Уйё. Надо возвращать в False при выходе из программы или фатальной ошибке. Иначе все остальные процессы Excel тоже оказываются заблоченными. Посмотрим, поможет ли перезагрухка. Добавлено Ахаха, полный треш: перезагрузка НЕ помогает, пока кодом обратно в False не вернешь. В общем, эффективный способ - если быть предельно аккуратным. |