mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
[VBA] Wyłączenie HMF 2014a z poziomu VBA https://forum.mix-soft.pl/viewtopic.php?f=15&t=5786 |
Strona 1 z 1 |
Autor: | wars1977 [ 2014-05-09, 09:20 ] |
Tytuł: | [VBA] Wyłączenie HMF 2014a z poziomu VBA |
Witam, Czy mógł by mi ktoś podpowiedzieć jak wyłączyć HMF 2014a z posiomu VBA ? oraz w jaki sposób z poziomu VBA zakończyć pracę z firmą. To drugie rozwiązanie było by nawet lepsze. Jakaś metoda , funkcja ? Dzięki z góry i pozdrawiam Łukasz. |
Autor: | rafal [ 2014-05-10, 08:18 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
Opisz do czego Ci jest potrzebna taka funkcjonalność. W, którym momencie chcesz wywołać kod zamykający? Zamykając program możesz mieć w edycji dokumenty. Operator musi zdecydować co z nimi zrobić (zapisać, Anulować zmiany). Możesz wysłać do procesu aplikacji HMF komunikat WM_CLOSE Kod: SendMessage(hWnd, WM_CLOSE, 0, 0) W ostateczności możesz zabić proces aplikacji. Ale to nie jest chyba dobry pomysł. |
Autor: | wars1977 [ 2014-05-10, 09:42 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
Zaraz po otwarciu firmy sprawdzam kilka danych w bazie i na ich podstawie decyduję o zamknięciu programu lub nie. Uzytkownik nie zdąży nic zrobić, więc nie ma problemu z otwartymi dokumentami. Najlepiej było by zalogowanego już użytkownika , po prostu wylogować (zakończyć prace z firmą). Starałem się użyć obiektu "application" i metody "quit" ,ale nie działa. |
Autor: | rafal [ 2014-05-10, 12:25 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
A dlaczego nie użyjesz OnOpen w procedurach AmBasic? Kod: int sub OnOpen() if nie_spełniony_warunek then OnOpen = -6000 // spowoduje wyjście z firmy else OnOpen = 0 endif endsub |
Autor: | wars1977 [ 2014-05-13, 09:17 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
Ponieważ cała procedura za wzgledu na jej specyfike ,musi być napisana w VBA. Chyba ,że można wywołać jakąś procedurę AmBasica zamykająca firmę z poziomu VBA ? . To może inaczej, jak z poziomu AmBasic'a wykonać funkcję napisaną w VBA i otrzymać od niej z powrotem wynik do AmBasic'a ? |
Autor: | rafal [ 2014-05-13, 13:15 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
W AmBasic Obiektem aplikacji Kod: dispatch app = GetApplication() Potem obiekt dokumentu sbc Kod: doc = App.Documents.OpenDocument("") potem obiekt MxInter Kod: mxInter = doc.CommandDoc("GetMxInterDoc") potem uruchomienie aplikacji VBA Kod: exec = mxInter.ExecuteApp(....) exec zwróci retVal z procedury sub _EvExecuteApp() po stronie VBA |
Autor: | wars1977 [ 2014-05-13, 14:10 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
rafal pisze: A dlaczego nie użyjesz OnOpen w procedurach AmBasic? Kod: int sub OnOpen() if nie_spełniony_warunek then OnOpen = -6000 // spowoduje wyjście z firmy else OnOpen = 0 endif endsub W którym miejscu w raportach wstawić tą procedurę, lub gdzie jest ta procedura ? OK już znalazłem :) |
Autor: | wars1977 [ 2014-05-13, 14:23 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
rafal pisze: W AmBasic Obiektem aplikacji Kod: dispatch app = GetApplication() Potem obiekt dokumentu sbc Kod: doc = App.Documents.OpenDocument("") potem obiekt MxInter Kod: mxInter = doc.CommandDoc("GetMxInterDoc") potem uruchomienie aplikacji VBA Kod: exec = mxInter.ExecuteApp(....) exec zwróci retVal z procedury sub _EvExecuteApp() po stronie VBA 1. Ok ogarnąłem wszystko poza mxInter.ExecuteApp(....). Co mam wpisać zamiast kropeczek w nawiasie ? nazwę mojej procedury w VBA? 2. retVal zwróci mi w wartość wygenerowaną w mojej funkcji w VBA ? |
Autor: | rafal [ 2014-05-13, 15:24 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
Pierwszy parametr to zawsze "0" jeżeli uruchamiasz z AmBasica. Pozostałe to parametry typu Variant przekazywane do VBA. Wywołanie ExecuteApp odpala zdarzenie EvExecuteApp() VBA z tymi samymi parametrami. Co zwróci to zdarzenie za pomocą retVal to znajdzie się w zmiennej exec AmBasica. |
Autor: | wars1977 [ 2014-05-15, 07:40 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
rafal pisze: Pierwszy parametr to zawsze "0" jeżeli uruchamiasz z AmBasica. Pozostałe to parametry typu Variant przekazywane do VBA. Wywołanie ExecuteApp odpala zdarzenie EvExecuteApp() VBA z tymi samymi parametrami. Co zwróci to zdarzenie za pomocą retVal to znajdzie się w zmiennej exec AmBasica. Czy mógł bym prosić o jakiś przykład w VBA jak obsłużyć to zdarzenie ?. Nigdzie nie mogę znaleźć EvExecuteApp() |
Autor: | rafal [ 2014-05-15, 10:30 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
Nie mam gotowego przykładu. Ale może zostać dla Ciebie przygotowany. Skontaktuj się z Ekspertem. |
Autor: | wars1977 [ 2014-05-16, 10:41 ] |
Tytuł: | Re: [VBA] Wyłączenie HMF 2014a z poziomu VBA |
rafal pisze: Nie mam gotowego przykładu. Ale może zostać dla Ciebie przygotowany. Skontaktuj się z Ekspertem. To napisz mi proszę tylko jak mogę obsłużyć w VBA zdarzenie EvExecuteApp. Coś mam załadować do VBA, jakąś bibliotekę?. |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |