|
Выгрузка из Forms в EXCEL блокирует EXCEL
|
|||
---|---|---|---|
#18+
Добрый день! Может кто подскажет как решить такую задачу: Есть выгрузка из FORMS-ов в EXCEL с помощью шаблона с макросами. Макросы достаточно сложные, в том числе обращаются к другому шаблону PowerPoint со своими макросами. Всё бы хорошо, но т.к. выгрузка достаточно сложная и занимает определённое время, то пользователи во время выгрузки открывают другие документы EXCEL, в результате чего происходят различные ошибки или зависание как шаблона, который вызывается из FORMS-ов так и открываемого файла EXCEL. Сам используемый шаблон при выгрузке из FORMS-ов (который при обычном режиме работает в скрытом режиме) также отображается на экране, что также неправильно... Обращение к макросам прописано через имя документа, но всё-равно получается где-то залипание. В общем выгрузка из FORMS-ов в EXCEL блокирует параллельную работу с EXCEL-ем... Можно это как-то обойти? Есть возможность запускать совершенно независимый экземпляр EXCEL, который никак не будет влиять на другие процессы с EXCEL ? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 10:16 |
|
Выгрузка из Forms в EXCEL блокирует EXCEL
|
|||
---|---|---|---|
#18+
oracletbm, Выяснить, есть ли вообще возможность запустить отдельный инстанс Exel, это можно понять например путём анализа Command-line parameters to the startup Exel, для MS Word например это /w, для Exel вроде только с 2013 версии /x параметр, т.е. если у пользователя офис младшей версии, то такое уже не провернуть в принципе. Если всё так, то тогда надо искать другие пути, например блокировать форму на время генерации отчёта, пересмотреть сам принцип генерации отчёта и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 11:19 |
|
Выгрузка из Forms в EXCEL блокирует EXCEL
|
|||
---|---|---|---|
#18+
ещё идея, можно посмотреть в сторону WEBUTIL_HOST (для 6 формсов какая-то подобная либа тоже была) и его API, например FUNCTION Blocking(cmd in VARCHAR2) return PROCESS_ID; вызывать Exel через cmd и подсовывать шаблон с макрасами ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 11:25 |
|
Выгрузка из Forms в EXCEL блокирует EXCEL
|
|||
---|---|---|---|
#18+
OldBoyOdeSuoracletbm, Выяснить, есть ли вообще возможность запустить отдельный инстанс Exel, это можно понять например путём анализа Command-line parameters to the startup Exel, для MS Word например это /w, для Exel вроде только с 2013 версии /x параметр, т.е. если у пользователя офис младшей версии, то такое уже не провернуть в принципе. Если всё так, то тогда надо искать другие пути, например блокировать форму на время генерации отчёта, пересмотреть сам принцип генерации отчёта и т.д. Спасибо. Office 2013 года, т.е. теоретически параметр "/x" при запуске EXCEL наверно поможет... Но как указать данный параметр при открытии EXCEL через OLE ? Ещё не совсем понимаю принцип работы данного параметра: 1. при открытии EXCEL с данным параметром создаётся полностью отдельный процесс EXCEL, к которому при открытии EXCEL ещё раз уже обращения не будет, т.е. если запустить EXCEL из FORMS-ов с данным параметром, то когда пользователь откроет параллельно какой-нибудь файл EXCEL, то он подцепит уже работающий экземпляр EXCEL или создаст новый? или 2. данный параметр имеет смысл только при открытии нового экземпляра EXCEL, т.е. этот параметр поможет только если пользователи будут открывать параллельно файлы EXCEL c использованием данного параметра, что разумеется не подходит, т.к. никто из пользователей этим замарачиваться не будет... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 12:38 |
|
Выгрузка из Forms в EXCEL блокирует EXCEL
|
|||
---|---|---|---|
#18+
oracletbm, - да excel.exe /x - видно что создаётся два процесса в task manager, т.е. отдельные процессы - я думал он при старте макросами себя как-то генерирует, тогда через командную строку из формсов с помощью WEBUTIL_HOST и запустить. А если через OLE надо... тогда идей нет как "Но как указать данный параметр при открытии EXCEL через OLE ?" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 13:28 |
|
Выгрузка из Forms в EXCEL блокирует EXCEL
|
|||
---|---|---|---|
#18+
https://msdn.microsoft.com/en-us/library/office/dn254068.aspx вот свойства приложения, ед. что бросается в глаза Application.MergeInstances = False попробовать ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 14:00 |
|
Выгрузка из Forms в EXCEL блокирует EXCEL
|
|||
---|---|---|---|
#18+
OldBoyOdeSu, Спасибо. Попробую. Вышесказанное дало ещё идею - т.к. при создании EXCEL через OLE используется OLE2.CREATE_OBJ('Excel.Application'), то видимо стандартно всегда создаётся новый процесс EXCEL, а это уже при ручном открытии EXCEL, если уже есть запущенный процесс, то он и цепляется, вместо создания нового. Т.е. попробую создавать сразу 2 объекта Excel.Application. Вроде как идея сработала - открываемые файлы цепляют 1-ый запущенный процесс EXCEL, который я не использую. Хочется верить, что открываемый пользователями EXCEL будет цеплять всегда 1-оый процесс, а не в хаотичном порядке... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 14:34 |
|
Выгрузка из Forms в EXCEL блокирует EXCEL
|
|||
---|---|---|---|
#18+
Ну у Excel есть еще такое свойство, как работает, из описания не очень понятно: Application.MergeInstances Property https://msdn.microsoft.com/en-us/library/office/dn481210.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2016, 13:49 |
|
|
start [/forum/topic.php?fid=51&msg=39178659&tid=1878024]: |
0ms |
get settings: |
26ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
123ms |
get topic data: |
21ms |
get forum data: |
3ms |
get page messages: |
236ms |
get tp. blocked users: |
2ms |
others: | 321ms |
total: | 755ms |
0 / 0 |