Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Опять про OLE / 16 сообщений из 16, страница 1 из 1
13.11.2008, 11:38
    #35651108
soft1986
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
Всем привет!
Столкнулся с таким.

GetFileOpenName ( "Выберите", ls_pathname, ls_filename )
ls_fullname = ls_pathname
// Выбор EXCEL файла

myoleobject = CREATE OLEObject
result = myoleobject.ConnectToObject( ls_fullname )
// result = 0 // Ok
//....
//....
//....
myoleobject.DisconnectObject()
DESTROY myoleobject

Все прекрасно работает.
НО в диспетчере задач остается висеть EXCEL.EXE

При следующей операции
result = -7
Или если открываешь EXCEL извне - системная ошибка.
Как это побороть ? Может что не так делаю ?
...
Рейтинг: 0 / 0
13.11.2008, 11:40
    #35651119
Pasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
сделайте в конце GarbageCollect ( )
...
Рейтинг: 0 / 0
13.11.2008, 11:44
    #35651135
soft1986
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
Pashaсделайте в конце GarbageCollect ( )

Не помогло.
...
Рейтинг: 0 / 0
13.11.2008, 11:48
    #35651152
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
soft1986 пишет:

> Все прекрасно работает.
> НО в диспетчере задач остается висеть EXCEL.EXE

Файл открывал? Закрой его сам или дай возможность сделать это юзеру.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.11.2008, 11:53
    #35651179
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
перед myoleobject.DisconnectObject()
напишите еще myoleobject.Quit()
...
Рейтинг: 0 / 0
13.11.2008, 11:55
    #35651185
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
а возможно еще и myoleobject.ActiveWorkbook.Close()
...
Рейтинг: 0 / 0
13.11.2008, 11:55
    #35651190
soft1986
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
Dim2000
soft1986 пишет:

> Все прекрасно работает.
> НО в диспетчере задач остается висеть EXCEL.EXE

Файл открывал? Закрой его сам или дай возможность сделать это юзеру.


Файл не открывал.
...
Рейтинг: 0 / 0
13.11.2008, 12:03
    #35651226
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
Код: plaintext
1.
2.
3.
4.
5.
FileClose(li_ole_number)
IF IsValid(ole_book) THEN 
	ole_book.Application.Quit
	ole_book.DisconnectObject()
	DESTROY ole_book
END IF
...
Рейтинг: 0 / 0
13.11.2008, 12:27
    #35651330
soft1986
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
Riska
Код: plaintext
1.
2.
3.
4.
5.
FileClose(li_ole_number)
IF IsValid(ole_book) THEN 
	ole_book.Application.Quit
	ole_book.DisconnectObject()
	DESTROY ole_book
END IF


А зачем FileClose(li_ole_number), если не было FileOpen?
И потом: все работает(ole_book.Application.Quit),
но если уже открыт EXECL-документ,
то он тут-же закрывается. А это не есть хорошо.
Как быть ?
...
Рейтинг: 0 / 0
13.11.2008, 12:44
    #35651389
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
непонятно!!
Вам надо чтоб и документ в Excel оставался открытым, и процесса в диспетчере задач небыло?
...
Рейтинг: 0 / 0
13.11.2008, 12:47
    #35651394
soft1986
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
VanoRнепонятно!!
Вам надо чтоб и документ в Excel оставался открытым, и процесса в диспетчере задач небыло?

Если вне приложения открыт EXCEL - то он тут-же закрывается.
А если там у user-а что-то важное висит ?
...
Рейтинг: 0 / 0
13.11.2008, 13:04
    #35651474
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
Делай ConnecttoNewObject при этом открывается новый инстанс, соответственно и закрывать будешь только его, а без Quit выход не произведен, это все равно что просто открыть Exel, а потом удивляться почему же он открытый висит
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
13.11.2008, 13:18
    #35651523
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
Тогда наверно сначала делать ConnecttoObject, если сделается, то в конце не делать Quit, а если не сделается то тогда уж ConnecttoNewObject, с Quit-ом в конце
...
Рейтинг: 0 / 0
13.11.2008, 13:23
    #35651544
soft1986
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
VanoRТогда наверно сначала делать ConnecttoObject, если сделается, то в конце не делать Quit, а если не сделается то тогда уж ConnecttoNewObject, с Quit-ом в конце

Извиняюсь за настойчивость.
Это Понятно.
А как после успешного ConnecttoNewObject - привязаться к нужному excel-документу.
...
Рейтинг: 0 / 0
13.11.2008, 13:33
    #35651578
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
не понял
ConnecttoNewObject и ConnecttoObject- это функции вашей переменной типа OLEObject... с этой переменной и надо потом работать
myoleobject.Application.WorkBooks.Open("файл")

а в конце
myoleobject.DisconnectObject()
если коннектились с ConnecttoNewObject, то тогда еще myoleobject.Quit()
...
Рейтинг: 0 / 0
13.11.2008, 14:46
    #35651890
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про OLE
Работайте с конкретным workbook-ом
ole_object.workbooks(<имя книги>).worksheets(<имя листа>)
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Опять про OLE / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]