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):

Kód: Vybrat vše

Public zavrit As Boolean

a do svého makra před řádek který má sešit zavřít přidej:

Kód: Vybrat vše

zavrit = True

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 :)