| Автор | Сообщение |
|
|
| постоянный участник
|
Пост N: 4144
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.04.15 22:50. Заголовок: Вопрос по Excel ?
Всем привет. Вопрос к знатокам Excel-я, как подсчитать сумму ВСЕХ значений с минусом и с плюсом ? 
|
 |

|
|
Ответов - 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.
|
 |

|
|
|
| |
Пост 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 остается. Удаляю через Диспетчер задач. Как избавиться от этой напасти ...?
|
 |

|
|
|
| |
Пост N: 8216
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.12.25 18:03. Заголовок: Alex_Cher пишет: oE..
Alex_Cher пишет: попробуй так oExcel:Application:Quit()
|
 |

|
|
|
| |
Пост N: 105
Зарегистрирован: 18.06.15
|
|
Отправлено: 25.12.25 08:16. Заголовок: Dima пишет: oExcel:..
Dima пишет: | цитата: | | oExcel:Application:Quit() |
| Дима, привет, к сожелению ситуация не изменилась ... эта проблема только у меня? Где капать ?
|
 |

|
|
|
| |
Пост N: 8217
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.12.25 09:55. Заголовок: Alex_Cher погугли, ..
Alex_Cher погугли, может найдешь что excel application quit not working
|
 |

|
|
|
| |
Пост 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
|
 |

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

|
|
|
| |
Пост N: 106
Зарегистрирован: 18.06.15
|
|
Отправлено: 26.12.25 07:38. Заголовок: Dima пишет: все отр..
Dima пишет: Дима, привет, загрузил твой пример ... все по старому, в памяти Excel остается. У меня WIN7 64 бит .... Пытаюсь разобраться.
|
 |

|
|
|
| |
Пост N: 2026
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.12.25 08:34. Заголовок: Alex_Cher пишет: вс..
Alex_Cher пишет: | цитата: | все по старому, в памяти Excel остается. У меня WIN7 64 бит .... Пытаюсь разобраться. |
| Тоже несколько лет назад столкнулся с этой проблемой. По RDP на сервере 30 пользователей активно запускали отчеты в excel и через 4 часа в памяти висело несколько сотен процессов. Тогда решил кардинально, после quit если процесс висел, сносил его через wmi.
|
 |

|
|
|
| |
Пост N: 8221
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.12.25 08:38. Заголовок: Alex_Cher пишет: Ди..
Alex_Cher пишет: | цитата: | Дима, привет, загрузил твой пример ... все по старому, в памяти Excel остается. У меня WIN7 64 бит .... Пытаюсь разобраться. |
| тогда, как вариант, убивай окно Excel по его хендлу его можно получить так oExcel:hWnd
|
 |

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

|
|
|
|
|
| |
Пост 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 Код я не тестил, но должно работать
|
 |

|
|
|
| |
Пост N: 107
Зарегистрирован: 18.06.15
|
|
Отправлено: 27.12.25 07:35. Заголовок: Dima пишет: CloseW..
Dima пишет: Дима, линьковщик ругается ... чего-то не хватает?
|
 |

|
|
|
| |
Пост 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.
|
 |

|
|
|
| |
Пост 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
|
 |

|
|
|
| |
Пост 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" Чего-то не хватает ?
|
 |

|
|
|
| |
Пост N: 8225
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.12.25 13:17. Заголовок: Alex_Cher так ее на..
Alex_Cher так ее написать надо как и ISWINDOW
|
 |

|
|
|
| |
Пост 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"
|
 |

|
|
|
| |
Пост 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
|
 |

|
|
|
| |
Пост 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)
|
 |

|
|
Ответов - 194
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|