Страницы: 1
RSS
Как убить лишний процесс Excel через VBA
 
Доброго времени суток.  
При выгрузке из SAP в Excel, создается новый процесс, при уже запущенном, в котором открывается выгрузка. В этой выгрузке не подгружаются надстройки. При закрытии книги новый процесс остается висеть, и при повторном открытии книги с выгрузкой не позволяет использовать надстройки. Приходится закрывать Excel, убивать все процессы. И запускать все заново.  
 
Как убить лишний процесс через VBA ?
 
надо еще курсы русского языка организовать..  :)  
 
так и не понял в каком открывается выгрузка в уже запущенном или в новом?  
 
вручную надстройки тоже не подгружаются? если открыть надстройки, выключить их, закрыть окно надстроек. Потом еще раз открыть и включить.
Живи и дай жить..
 
Выгрузка открывается в новом процессе.  
Вручную надстройки подгружаются.
 
есть такая проблема.. пока игнорирую :) - подгружаю вручную.  
 
из идей - может попробовать изменить шаблон книги, сделать его с макросом загрузки, а тот уже будет принудительно подгружать надстройку
Живи и дай жить..
 
Если делать через workbook_open и вешать код в personal.xls не помагает.  
Personal тоже не грузится. Или я не правильно понял?
 
Есть вот такой vbs код на тему, может пригодится:  
 
'на рабочем столе открываем файл Proba.xls в установленной    
'по умолчанию сессии (ProgID) Excel  
Set objShellApp = CreateObject("Shell.Application")  
Set objShell = CreateObject("WScript.shell")  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
 
FolderPath = objShell.SpecialFolders("Desktop")    
FileName = "Book4.xls"  
FilePath = FolderPath & "\" & FileName  
 
Set File = objFSO.GetFile(FilePath)  
 
objShellApp.ShellExecute File.name, "",FolderPath,"open", 10  
WScript.Sleep 2000  
Set objExcel = GetObject(, "Excel.Application")  
'не шибко понятно, но работает -)
 
Сейчас только заметил - Proba=Book4, это я тестил код.
 
нет. не так. сделать шаблон с макросом, обозвать его книга.xls и сохранить в папку ... какую-то там для офиса. этот шаблон будет использоваться по умолчанию для любой книги.. но это, если данные прямо в приложение грузятся, а если создается файл на диске, а уже потом открывается в иксель, то так не пройдет.
Живи и дай жить..
 
по-моему вот это  работает :  
 
в свойствах папки , типе файлов изменил команду открытия файлов иксель с  
excel.exe /e %1  
 
на  
 
excel.exe /a "надстройка" /e %1
Живи и дай жить..
 
а еще можно из того процесса, где надстройка загружена, получить доступ к другому процессу, и делать что нужнно..
Живи и дай жить..
 
С параметрами не получится - нет доступа.    
 
А вот вариант с получением доступа к другому процессу... Не подскажите как?
 
dim excel as excel.application  
Set excel = GetObject(, "Excel.Application")  
 
dim x,sh,wex  
for each x in excel.workbooks  
for each sh in x.sheets  
if sh.name="нужное имя" then    
set wex=sh  
goto ex  
next sh  
next x  
ex: ...
Живи и дай жить..
 
конечно еще проверку на существование..  
 
типа if wex is nothing then exit sub
Живи и дай жить..
 
Спасибо. Буду разбираться.  
Туму можно закрывать.
 
кстати проверку-то и не надо, просто  
 
dim excel as excel.application  
Set excel = GetObject(, "Excel.Application")  
 
dim x,sh,wex  
for each x in excel.workbooks  
for each sh in x.sheets  
if sh.name="нужное имя" then    
set wex=sh  
goto ex  
next sh  
next x  
exit sub  
ex: ...
Живи и дай жить..
Страницы: 1
Читают тему
Наверх