Excel - makro na ukončení aplikace Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Uživatelský avatar
Cipera
Level 1
Level 1
Příspěvky: 57
Registrován: březen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Excel - makro na ukončení aplikace

Příspěvekod Cipera » 18 čer 2012 10:20

Zdravím,
pokouším se napsat makro, které se po několika minutách od otevření souboru zeptá a případně uloží změny a ukončí excel

zatím mi s pomocí tohoto fóra vyšlo toto:

Sub Ukonci10min()
Application.OnTime Now + TimeValue("00:10:00"), "Konec"
End Sub

Sub Konec()

If MsgBox("Opravdu ještě potřebujete pracovat v tomto souboru?", vbYesNo, "") <> vbNo Then Exit Sub

ChDir "C:\test"
ActiveWorkbook.SaveAs Filename:= _
"C:\test\test.xls", FileFormat:= _
xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False

Dim strClsExl As String
strClsExl = "TASKKILL /F /IM Excel.exe"
Shell strClsExl, vbHide

End Sub

Ale mám tam chybu, ať vyberu yes nebo no, vždy se mi uloží a zavře .. :-(

prosím o radu

Reklama
Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: Excel - makro na ukončení aplikace

Příspěvekod Azuzula » 18 čer 2012 10:33

Na to bych použila Select case

Kód: Vybrat vše

dotaz = MsgBox("Opravdu ještě potřebujete pracovat v tomto souboru?", vbYesNo, "")
Select Case dotaz
    Case vbYes
    Exit Sub
    Case vbNo
    End Select
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

Uživatelský avatar
Cipera
Level 1
Level 1
Příspěvky: 57
Registrován: březen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - makro na ukončení aplikace

Příspěvekod Cipera » 18 čer 2012 12:56

díky, upravil jsem to následujícím způsobem:

Private Sub Workbook_Open()

Application.OnTime Now + TimeValue("00:00:30"), "Konec"

End Sub


Sub Konec()

dotaz = MsgBox("Opravdu ještě potřebujete pracovat v tomto souboru?", vbYesNo, "")
Select Case dotaz
Case vbYes
Exit Sub
Case vbNo
End Select

ActiveWorkbook.SaveAs Filename:= _
"C:\test\test.xls", FileFormat:= _
xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False

Dim strClsExl As String
strClsExl = "TASKKILL /F /IM Excel.exe"
Shell strClsExl, vbHide

End Sub


Když makro spustím ručně, tak zafunguje.
Ale samo se mi nespustí ...
Po otevření souboru se excel ptá zda obnovit poškozený soubor ...

v čem jsem to zas udělal špatně?

Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: Excel - makro na ukončení aplikace

Příspěvekod Azuzula » 18 čer 2012 16:03

Ten soubor se bude ukládat na stejné místo kde se otevírá? Resp. pokud se název a umístění nebude měnit, tak místo ActiveWorkbook.SaveAs a vše co je pod tím bych nahradila následujícím:

Kód: Vybrat vše

ActiveWorkbook.save
Application.DisplayAlerts = False
Application.Quit

Jakou máte verzi Office?
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

Uživatelský avatar
Cipera
Level 1
Level 1
Příspěvky: 57
Registrován: březen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - makro na ukončení aplikace

Příspěvekod Cipera » 20 čer 2012 15:42

Soubor se ukládá do stejného místa, office mám 2010 a v angličtině - na to prostě nestačím :-(

Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: Excel - makro na ukončení aplikace

Příspěvekod Azuzula » 20 čer 2012 18:24

To makru bude vypadat následovně:

Kód: Vybrat vše

Sub Konec()
Dim dotaz as Integer
dotaz = MsgBox("Opravdu ještě potřebujete pracovat v tomto souboru?", vbYesNo, "")
Select Case dotaz
Case vbYes
Exit Sub
Case vbNo
End Select
'Uloží a ukončí excel
ActiveWorkbook.save
Application.DisplayAlerts = False
Application.Quit
End Sub


V tom vašem makru ukládáte soubor do staršího formátu a tím to možná dělá tu chybu. Vyzkoušejte co jsem napsala, teď už by to mělo fungovat.
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

Uživatelský avatar
Cipera
Level 1
Level 1
Příspěvky: 57
Registrován: březen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - makro na ukončení aplikace

Příspěvekod Cipera » 28 čer 2012 15:55

Děkuju, opravil jsem to, ale pro změnu dostanu hned hlášku, že nemám povolená makra ...
Soubor je uložen jako Excel Makro-Enabled Workbook.
ostatní makra mi standardně fungují ...

asi se na to už vykašlu

Uživatelský avatar
Cipera
Level 1
Level 1
Příspěvky: 57
Registrován: březen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - makro na ukončení aplikace

Příspěvekod Cipera » 02 črc 2012 11:53

řešení se našlo ... a bylo velmi jednoduché ... :-o

stačilo přesunout proceduru Konec() z ThisWorkbook do Modulu1

Teď se ještě pokouším doladit detaily ...

Krok 1. - dotaz zda je potřeba pracovat v souboru (Ano / Ne)
Krok 2 - Ano - opět čeká 10 minut následuje krok 1
Krok 3 - Ne - dotaz Uložit (ano/Ne)
Krok 4 - Ano - uložit, exit
Krok 5 - Ne - exit

zatím se mi soubor ukládá stále ...
prosím, v čem zas mám chybu ...?

Kód: Vybrat vše

Sub Konec()

'Okno - dotaz
Dim dotaz As Integer
        dotaz = MsgBox("Opravdu ještě potřebujete pracovat v tomto souboru?", vbYesNo, "")
        Select Case dotaz
              Case vbYes
                 Exit Sub
              Case vbNo
           
    EditDate = Now
    Application.OnTime Now + TimeValue("00:01:00"), "Konec"

'Okno - dotaz1

Dim dotaz1 As Integer
     dotaz1 = MsgBox("Soubor bude ukončen. Chcete soubor uložit?", vbYesNo, "")
     Select Case dotaz1
        Case vbYes
          Exit Sub
    Case vbNo

'Ukončí excel
    Application.DisplayAlerts = False
    Application.Quit
    End Select

End Select

'Uloží a ukončí excel
    ActiveWorkbook.Save
    Application.DisplayAlerts = False
    Application.Quit
 End Sub


Uživatelský avatar
Cipera
Level 1
Level 1
Příspěvky: 57
Registrován: březen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel - makro na ukončení aplikace

Příspěvekod Cipera » 10 črc 2012 08:47

prosím, máte někdo řešení? já ho stále nenašel :-(

Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: Excel - makro na ukončení aplikace  Vyřešeno

Příspěvekod Azuzula » 10 črc 2012 13:11

Mrkla jsem na ten kód a máte tam zpřeházených pár řádků. Taky bych tam přidala kontrolu změn v sešitu aby se přesně každých 10minut neukazovala tabulka zda chci ještě pokračovat v práci když stále pracuji.

Ukládá se to proto, že ukládání je úplně na konci makra neošetřeno což proběhne vždy. To jsou ty zpřeházené řádky.
Nastavte si proměnnou cas podle toho za jak dlouho se má dotaz ukázat, pro ladění tam je 10sec. Po každé změně v sešitu se resetuje Timer a pak se zobrazení dotazu oddálí o daný časový úsek.
Makra budou vypadat následovně:
Module:

Kód: Vybrat vše

Option Explicit

Sub ResetTimer()
Dim cas As String, CloseDownTime As Date

'*****************************************************
'Nastavení časové prodlevy formát "00:00:00"
cas = "00:00:10"
'*****************************************************

On Error Resume Next
If Not IsEmpty(CloseDownTime) Then
Application.OnTime CloseDownTime, "Konec", Schedule:=False 'zastaví spuštění makra "Konec"
End If

CloseDownTime = Now + TimeValue(cas)
Application.OnTime CloseDownTime, "Konec" 'Nastaví nový čas spuštění makra "Konec"
End Sub
Sub Konec()
Dim dotaz As Integer, dotaz1 As Integer
Dim EditDate As Date
'Okno - dotaz
dotaz = MsgBox("Opravdu ještě potřebujete pracovat v tomto souboru?", vbYesNo, "")
Select Case dotaz
    Case vbYes
        ResetTimer
        Exit Sub
    Case vbNo
    EditDate = Now

    'Okno - dotaz1
    dotaz1 = MsgBox("Soubor bude ukončen." & vbCrLf & "Chcete soubor uložit?", vbYesNo, "")
    Select Case dotaz1
        Case vbYes
            'uloží a ukončí excel
            ActiveWorkbook.Save
            Application.DisplayAlerts = False
            Application.Quit
            Exit Sub
        Case vbNo
            'ukončí excel bez uložení
            Application.DisplayAlerts = False
            Application.Quit
    End Select
End Select
End Sub

Předpokládám, že s proměnnou EditDate se bude dál pracovat, tak jsem ji tam nechala

Kontrola používání sešitu v ThisWorkbook

Kód: Vybrat vše

Option Explicit

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
ResetTimer
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ResetTimer
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ResetTimer
End Sub
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Ukončení programu
    od fafejt » 11 pro 2023 16:52 » v Vše ostatní (sw)
    5
    1541
    od Roman Tyčka Zobrazit poslední příspěvek
    11 pro 2023 18:40
  • Makro pro myš Rapture Python
    od mmmartin » 27 srp 2023 15:18 » v Problémy s hardwarem
    9
    1111
    od mmmartin Zobrazit poslední příspěvek
    29 srp 2023 16:47
  • O2 TV aplikace - NEFUNGUJE?
    od holas18 » 09 dub 2023 16:17 » v Vše ostatní (z oblasti IT)
    5
    3017
    od pcmaker Zobrazit poslední příspěvek
    21 dub 2023 18:15
  • Aplikace na stabilizaci videa
    od pavel2010 » 28 led 2024 11:28 » v Design a grafické editory
    1
    721
    od petr22 Zobrazit poslední příspěvek
    28 led 2024 12:36
  • Žlutomodrý štít u ikony aplikace w11 Příloha(y)
    od PittnerJiri » 01 srp 2023 15:03 » v Windows 11, 10, 8...
    5
    2099
    od petr22 Zobrazit poslední příspěvek
    23 zář 2023 19:16

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů