Stránka 1 z 1
zavření sešitu - excelu
Napsal: 12 srp 2014 19:51
od crgo77
Zdravím všechny,
prosím o pomoc s kódem - nevěděl by někdo,jak zakázat ukončení ( zavření excelu ) křížkem?
Na googlu jsem nějaké možnosti našel,ale ty se bohužel týkaly jen zakázání zavření userform formuláře.
Nevěděl by někdo jak zakázat zavření excelu křížkem? V tabulce mám tlačítko uložení a zavření ( ukládá se mi tím záloha souboru ).
Předem děkuji za radu.
Re: zavření sešitu - excelu
Napsal: 13 srp 2014 08:51
od Azuzula
Ahoj,
a co třeba dát to makro na uložení do
Workbook_BeforeClose v modulu
This Workbook? Pak kdykoliv zmáčkneš křížek, tak se ti sešit uloží a zavře. Nešlo by to tak?
--- Doplnění předchozího příspěvku (13 Srp 2014 08:58) ---
Samožřejmně, že i zakázání zavření jde udělat.
V modulu This Workbook:
Kód: Vybrat vše
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If zavrit = True Then
Cancel = False
Else
Cancel = True
End If
End Sub
Na začátek modulu s makrem ukládajícím sešit (úplně nahoru před všechny makra):
a do svého makra před řádek který má sešit zavřít přidej:
Re: zavření sešitu - excelu
Napsal: 14 srp 2014 23:05
od guest
Zavřít sešit nebo zavřít Excel? Jo křížek v titulkové liště aplikace (mimochodem tlačítka mají souvislost se systémovým menu okna, tj, po klepnutí na ikonu Excelu v levém horním roku) třeba přes API a dál? Co pravé tlačítko myši na zástupce Excelu v systémové liště, klávesová zkratka ALT+F4? Ono má opravdu větší smysl nenechat si zavřít sešit...
Re: zavření sešitu - excelu
Napsal: 17 srp 2014 14:23
od crgo77
Zdravím,
myslím tím zavření celého excelu. Jak jsem psal,používám ukládání kopie sešitu ( prosil jsem o řešení v jiném tématu ) ale kolegové,kteří používají
tento sešit mi bohužel místo tlačítka uložit a zavřít ( sešit se sám uloží a ukončí celý excel ,včetně vytvoření zálohy ) mi klikají na křížek a to je bohužel nežádoucí. Neustále mi dávají otázky typu co s tím mám dělat ( vyskočí na ně hlášení,že v sešitu byly provedeny změny,zda se mají uložit ).Snažil jsem se tomu
předejít výše uvedeným tlačítkem,ale nemůžu je nějak dotlačit aby ho používali.
Děkuju za pochopení a rady,které mi poradíte.
Re: zavření sešitu - excelu
Napsal: 18 srp 2014 18:50
od Azuzula
Tak ještě jednou:
Azuzula píše:... a co třeba dát to makro na uložení do Workbook_BeforeClose v modulu This Workbook? Pak kdykoliv zmáčkneš křížek, tak se ti sešit uloží a zavře...
Pokud nebudeš vědět jak na to, napiš.
Re: zavření sešitu - excelu
Napsal: 18 srp 2014 23:11
od guest
Pokud víte, co děláte...
Kód: Vybrat vše
Private Const MF_BYCOMMAND As Long = &H0
Private Const SC_CLOSE As Long = &HF060
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Sub NedovolitZavrit()
Call CloseButton(False)
End Sub
Sub PovolitZavrit()
Call CloseButton(True)
End Sub
Private Sub CloseButton(Optional bEnabled As Boolean = False)
Dim hSysMenu As Long
Dim hWnd As Long
'handle aplikace
hWnd = Application.hWnd
If bEnabled Then
'obnova systémového menu
Call GetSystemMenu(hWnd, 1)
Else
'handle systémového menu
hSysMenu = GetSystemMenu(hWnd, 0)
'křížek zakázán
Call RemoveMenu(hSysMenu, SC_CLOSE, MF_BYCOMMAND)
End If
'překreslení
Call DrawMenuBar(hWnd)
End Sub
Re: zavření sešitu - excelu
Napsal: 20 srp 2014 16:00
od guest
Já tenhle hatlamatla dotaz nechápu. Sešit osobních maker je v podstatě něco mezi doplňkem a normálním sešitem. Můžete k němu přistoupit přes Workbooks("PERSONAL.XLSB"). Hlášky ukládaní se lze zbavit několika způsoby : zmíněné SaveChanges metody Close, vlastnost Saved nastavená na True (Excel nabude dojmu, že v sešitu nenastaly změny), nebo přes Application.DisplayAlerts = False. Obecně ale nerozumím tomu, proč se vůbec o sešit maker zajímáte (a také nebyl součástí původního dotazu). Ostatně jeho programové zavření může zapříčinit nemožnost nahrát další makro (správně řečeno proceduru).
Re: zavření sešitu - excelu
Napsal: 21 srp 2014 16:22
od guest
Test, zůstal-li otevřený (ne viditelný) pouze PERSONAL.XLSB:
Kód: Vybrat vše
blnPouzePersonal = (Workbooks.Count = 1) And Workbooks(1).Name = "PERSONAL.XLSB"
Stačí?
P. S. Jistě, prdelky, vy chcete pomoct, ne já...
Re: zavření sešitu - excelu
Napsal: 22 srp 2014 12:49
od Toomicek
Bylo to přesunuto (smazáno), ale řešením bylo:
Kód: Vybrat vše
For Each w In Application.Workbooks
w.Save
Next w
Application.Quit
Uloží a zavře i personal.xlsb
Díky za pomoc :)