On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 4144
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.04.15 22:50. Заголовок: Вопрос по Excel ?


Всем привет.
Вопрос к знатокам Excel-я, как подсчитать сумму ВСЕХ значений с минусом и с плюсом ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 194 , стр: 1 2 3 4 5 6 7 8 9 10 All [только новые]


постоянный участник




Пост N: 8051
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.10.25 10:28. Заголовок: Я делал так как ИИ в..


Я делал так как ИИ выдал - oSheet:DisplayZeros := .F. // Настройки конкретного листа - нет показа 0
Это не работает.
А вот так работает - oExcel:ActiveWindow:DisplayZeros := .F.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 104
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 24.12.25 17:26. Заголовок: Excel остается в памяти ..?


После долгого времени снова пришлось заняться Excel под Harbour.
Вроде все получилось:

oExcel := TOleAuto():New( "Excel.Application" )
oWorkBook := oExcel:Workbooks:Open( _tec_dir + '\WORK\1.xlsx', 0)
oExcel:Visible := .T.
oExcel:DisplayAlerts := .f.
oWorkBook := oExcel:ActiveSheet()

...........................................

oExcel:Quit()

Но после выхода из программы окно Excel закрывается а в памяти Excel остается.
Удаляю через Диспетчер задач. Как избавиться от этой напасти ...?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8216
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.12.25 18:03. Заголовок: Alex_Cher пишет: oE..


Alex_Cher пишет:

 цитата:
oExcel:Quit()


попробуй так
oExcel:Application:Quit()

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 105
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 25.12.25 08:16. Заголовок: Dima пишет: oExcel:..


Dima пишет:

 цитата:
oExcel:Application:Quit()



Дима, привет, к сожелению ситуация не изменилась ... эта проблема только у меня?
Где капать ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8217
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.12.25 09:55. Заголовок: Alex_Cher погугли, ..


Alex_Cher
погугли, может найдешь что
excel application quit not working

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8219
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.12.25 11:15. Заголовок: Alex_Cher чекнул у ..


Alex_Cher
чекнул у себя вот таким примером
 
oExcel := win_oleCreateObject( "Excel.Application" )
oWorkBook := oExcel:WorkBooks:open(hb_dirbase()+"test.xls")
oExcel:DisplayAlerts := .f.
oExcel:Visible := .T.
wait
oExcel:Application:quit()


все отработало нормально
PS
WIN10 64 бит, Excel 2007

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8220
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.12.25 19:37. Заголовок: Alex_Cher пишет: Гд..


Alex_Cher пишет:

 цитата:
Где капать ?


покопал или нет ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 106
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 26.12.25 07:38. Заголовок: Dima пишет: все отр..


Dima пишет:

 цитата:
все отработало нормально



Дима, привет, загрузил твой пример ... все по старому, в памяти Excel остается.
У меня WIN7 64 бит .... Пытаюсь разобраться.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2026
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.12.25 08:34. Заголовок: Alex_Cher пишет: вс..


Alex_Cher пишет:

 цитата:
все по старому, в памяти Excel остается.
У меня WIN7 64 бит .... Пытаюсь разобраться.


Тоже несколько лет назад столкнулся с этой проблемой. По RDP на сервере 30 пользователей активно запускали отчеты в excel и через 4 часа в памяти висело несколько сотен процессов. Тогда решил кардинально, после quit если процесс висел, сносил его через wmi.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8221
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.12.25 08:38. Заголовок: Alex_Cher пишет: Ди..


Alex_Cher пишет:

 цитата:
Дима, привет, загрузил твой пример ... все по старому, в памяти Excel остается.
У меня WIN7 64 бит .... Пытаюсь разобраться.


тогда, как вариант, убивай окно Excel по его хендлу
его можно получить так
oExcel:hWnd

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8222
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.12.25 08:39. Заголовок: Haz пишет: сносил е..


Haz пишет:

 цитата:
сносил его через wmi


да тоже вариант

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8223
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.12.25 18:28. Заголовок: Dima пишет: тогда, ..


Dima пишет:

 цитата:
тогда, как вариант, убивай окно Excel по его хендлу
его можно получить так
oExcel:hWnd


то есть примерно так
 
HwndExcel:=oExcel:hWnd
oExcel:Application:quit()
* ждем какое то время
* и чекаем окно
if IsWindow(HwndExcel)
CloseWindow(HwndExcel)
endif


PS
Код я не тестил, но должно работать

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 107
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 27.12.25 07:35. Заголовок: Dima пишет: CloseW..


Dima пишет:

 цитата:
CloseWindow(HwndExcel)



Дима, линьковщик ругается ... чего-то не хватает?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 108
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 27.12.25 08:04. Заголовок: Dima пишет: HwndExc..


Dima пишет:

 цитата:
HwndExcel:=oExcel:hWnd
oExcel:Application:quit()
* ждем какое то время
* и чекаем окно
if IsWindow(HwndExcel)
CloseWindow(HwndExcel)
endif



после функций
HwndExcel:=oExcel:hWnd
oExcel:Application:quit()

IsWindow(HwndExcel) выдает .F.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8224
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.12.25 09:39. Заголовок: Alex_Cher а так что..


Alex_Cher
а так что выдает ?
HwndExcel:=oExcel:hWnd
IsWindow(HwndExcel)

да, что то ISWINDOW , выдает TRUE после завершения, хотя окна нет уже
 
#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( ISWINDOW )
{
hb_retl( IsWindow( (HWND) hb_parnl(1) ) );
}

#pragma ENDDUMP



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 109
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 27.12.25 11:33. Заголовок: Dima пишет: а так ч..


Dima пишет:

 цитата:
а так что выдает ?
HwndExcel:=oExcel:hWnd
IsWindow(HwndExcel)



Заменил название функции на IsWindow_1(HwndExcel), стала выдавать .Т.
вторая проблема, при сборке линьковщик ругается "Enresoved external _HB_FUN_CLОSEWINDOWS"
Чего-то не хватает ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8225
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.12.25 13:17. Заголовок: Alex_Cher так ее на..


Alex_Cher
так ее написать надо как и ISWINDOW

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 110
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 27.12.25 16:45. Заголовок: Dima пишет: так ее ..


Dima пишет:

 цитата:
так ее написать надо как и ISWINDOW


HwndExcel:=oExcel:hWnd
IsWindow(HwndExcel)

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( ISWINDOW )
{
hb_retl( IsWindow( (HWND) hb_parnl(1) ) );
}

#pragma ENDDUMP
при таком написании IsWindow(HwndExcel) выдает .F.

а так

HwndExcel:=oExcel:hWnd
IsWindow_1(HwndExcel)

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

HB_FUNC ( ISWINDOW_1 )
{
hb_retl( IsWindow( (HWND) hb_parnl(1) ) );
}

#pragma ENDDUMP
при таком написании IsWindow_1(HwndExcel) выдает .T.
но функция CloseWindow(HwndExcel) при сборке линьковщик ругается "Enresoved external _HB_FUN_CLОSEWINDOWS"

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8226
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.12.25 18:20. Заголовок: Alex_Cher Держи #d..


Alex_Cher
Держи
 
#define WM_CLOSE 0x0010

oExcel := win_oleCreateObject( "Excel.Application" )
oWorkBook := oExcel:WorkBooks:open(hb_dirbase()+"test.xls")
oExcel:DisplayAlerts := .f.
oExcel:Visible := .T.
hwnd:=oexcel:hwnd
? ISWINDOW(hwnd) // TRUE
wait
? POSTMESSAGE(hwnd,WM_CLOSE,0,0) // закрываем принудительно
*oExcel:Application:quit()
*oExcel:quit()
inkey(2)
? ISWINDOW(oExcel) // FALSE
wait

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

HB_FUNC( POSTMESSAGE )
{
hb_retnl( ( LONG ) PostMessage( ( HWND ) hb_parnl( 1 ), ( UINT ) hb_parni( 2 ), ( WPARAM ) hb_parnl( 3 ), ( LPARAM ) hb_parnl( 4 ) ) );
}


HB_FUNC( ISWINDOW )
{
#ifndef _WIN64
hb_retl( IsWindow( ( HWND ) hb_parnl( 1 ) ) );
#else
hb_retl( IsWindow( ( HWND ) hb_parnll( 1 ) ) );
#endif
}


#pragma ENDDUMP



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8227
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.12.25 20:06. Заголовок: Alex_Cher в общем к..


Alex_Cher
в общем код можно переделать
если после oExcel:Application:quit()
ISWINDOW(hwnd) вернет TRUE тогда валим
окно принудительно POSTMESSAGE(hwnd,WM_CLOSE,0,0)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 194 , стр: 1 2 3 4 5 6 7 8 9 10 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 49
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет