Stránka 1 z 1

ukončení excelu při nečinnosti  Vyřešeno

Napsal: 07 říj 2013 12:40
od butes
Zdarte, prosím můžete mi poradit, jak mám ukončit excel při nečinnosti. Máme v práci na serveru několik tabulek, na který mají přístup ostatní uživatelé. Bohužel se stává, že uživatel od PC odejde a zapomene excel vypnout a ostatní se dostanou jen do statusu READ-ONLY.

něco jsem našel tady http://office.lasakovi.com/excel/vba-triky/vba-excel-ukonceni-makrem/, ale neřeší to tu situaci, kdy někdo do tabulek zapisuje (prostě se excel natvrdo vypne.

Potřeboval bych brát ohled na zadávání a před ukončením vše uložit

Děkuji

Re: ukončení excelu při nečinnosti

Napsal: 10 říj 2013 08:15
od butes
Tak jsem o tom ještě přemýšlel a možná mám jeden nápad, ale nevím jak to udělat. Co kdyby po určitým čase vyskočil MsgBox s informací, že se aplikace do 10 sekund zavře. Uživatel by potom tento "odpočet" zrušil tlačítkem (začal by se znovu odpočítat původní čas), pokud by to neudělal, tak se aplikace uloží a uzavře

Re: ukončení excelu při nečinnosti

Napsal: 10 říj 2013 09:18
od guest
Popisujete sice běžný požadavek a situaci nesdíleného (on kdyby byl sdílený, tak si moc nepomůžete) sešitu, nicméně ten koncept není dobrý a nelze ho řešit stylem násilného ukončení práce na straně uživatele.

Pár poznámek:
Sešit můžete nasdílet tak, že mají uživatelé právo zapisovat pouze do své, předem vyhrazené oblasti sešitu/listu.
Teoreticky lze použít na časované spuštění procedury metodu OnTime objektu Application.
Doporučuji raději dát k dispozici šablonu - tu vám nezničí a pak teprve řešte cíl ukládání, slučování dat atp.

Re: ukončení excelu při nečinnosti

Napsal: 10 říj 2013 15:06
od butes
Ano vím že si drbu přes hlavu levou rukou pravé ucho, ale bohužel jinak to neumím :-)

našel jsem na netu ještě toto, bohužel mi to v Excelu 2010 nefunguje (vůbec se excel nerozběhne). nemohl by to někdo zdatný zkontrolovat a případně chybu opravit.

Děkuji
zdroj
http://www.mrexcel.com/archive/VBA/7422a.html

nakopírovat do modul1

Kód: Vybrat vše

Const idleTime = 30 'seconds
Public isActive As Boolean
Dim Start

Sub StartTimer()

Start = Timer
Do While Timer < Start + idleTime
DoEvents
Loop
If Not isActive Then
If MsgBox("Idle for " & idleTime & " seconds. Close workbook ?", vbQuestion + vbYesNo) = vbYes Then
ActiveWorkbook.Close
Else
isActive = False
StartTimer
End If
Else
isActive = False
StartTimer
End If

End Sub


nakopírovat do This Workbook

Kód: Vybrat vše

Private Sub Workbook_Open()
Module1.isActive = True
StartTimer
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Module1.isActive = True
StartTimer
End Sub


--- Doplnění předchozího příspěvku (Čtv Říj 10, 2013 3:40 pm) ---

tak už jsem na to přišel, hodně mi pomohlo toto

http://www.excelforum.com/showthread.php?t=600241

zavírám toto téma