Note: The other languages of the website are Google-translated. Back to English

Hogyan lehet menteni és bezárni a munkafüzetet egy bizonyos ideig tartó inaktivitás után?

Bizonyos esetekben véletlenül bezárhat egy munkafüzetet, ha sokáig más ügyekkel van elfoglalva, ami elveszíthet néhány fontos adatot a munkafüzetből. Van-e trükk a munkafüzet automatikus mentésére és bezárására, ha egy bizonyos ideig inaktiválta?

Automatikus mentés és bezárás a munkafüzet után, ha bizonyos ideig a VBA-t használja

nyíl kék jobb buborék Automatikus mentés és bezárás a munkafüzet után, ha bizonyos ideig a VBA-t használja

Az Excel programban nincs beépített funkció a probléma megoldására, de bemutathatok egy makrokódot, amely segíthet a munkafüzet mentésében és bezárásában, ha inaktivitást jelent egy bizonyos idő alatt.

1. Engedélyezze az automatikusan menteni kívánt munkafüzetet, amelyet egy bizonyos másodpercig inaktivitás után bezár, majd nyomja meg az gombot Alt + F11 gombokat a megnyitáshoz Microsoft Visual Basic for Applications ablak.

2. kettyenés betétlap > Modulok létrehozni a Modulok szkriptet, és illessze be a kód alá. Lásd a képernyőképet:

Dim CloseTime As Date
Sub TimeSetting()
    CloseTime = Now + TimeValue("00:00:15")
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, _
      Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, _
      Procedure:="SavedAndClose", Schedule:=False
 End Sub
Sub SavedAndClose()
    ActiveWorkbook.Close Savechanges:=True
End Sub

 

doc mentés bezár munkafüzet inaktivitás után 1

3. Ezután a Project Explorer panelen kattintson duplán Ez a munkafüzet, és illessze be a kód alatt a mellette lévő parancsfájlba. Lásd a képernyőképet:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call TimeStop
End Sub

Private Sub Workbook_Open()
    Call TimeSetting
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Call TimeStop
   Call TimeSetting
End Sub

 

doc mentés bezár munkafüzet inaktivitás után 2

4. Kattintson duplán a 2. lépésben beillesztett modulra, és nyomja meg a gombot F5 gombot a kód futtatásához. Lásd a képernyőképet:
doc mentés bezár munkafüzet inaktivitás után 3

5. Ezután 15 másodperc múlva megjelenik egy párbeszédpanel, amely emlékezteti a munkafüzet mentésére, majd kattintson a gombra Igen a munkafüzet mentéséhez és bezárásához.
doc mentés bezár munkafüzet inaktivitás után 4

Tipp:

(1) Az első kódban az inaktivitás idejét másra módosíthatja ebben a karaktersorozatban: Most + TimeValue ("00:00:15")

(2) Ha még soha nem mentette el a munkafüzetet, akkor a Mentés másként Először megjelenik a párbeszédpanel, és kéri, hogy mentse.
doc mentés bezár munkafüzet inaktivitás után 5


jó Munkalap védelme

Kutools for Excel's Munkalap védelme funkcióval egyszerre több lap vagy az egész munkafüzet megvédhető.
doc védjen több munkalapot

A legjobb irodai termelékenységi eszközök

A Kutools for Excel megoldja a legtöbb problémát, és 80% -kal növeli a termelékenységet

  • újrafelhasználás: Gyorsan helyezze be összetett képletek, diagramok és bármi, amit korábban használt; Cellák titkosítása jelszóval; Levelezőlista létrehozása és e-maileket küldeni ...
  • Szuper Formula Bár (könnyedén szerkeszthet több szöveget és képletet); Olvasás elrendezés (könnyen olvasható és szerkeszthető nagyszámú cella); Beillesztés a Szűrt tartományba...
  • Cellák / sorok / oszlopok egyesítése az adatok elvesztése nélkül; Osztott cellák tartalma; Kombinálja a duplikált sorokat / oszlopokat... megakadályozza az ismétlődő cellákat; Hasonlítsa össze a tartományokat...
  • Válassza a Másolat vagy az Egyedi lehetőséget Sorok; Válassza az Üres sorok lehetőséget (az összes cella üres); Super Find és Fuzzy Find sok munkafüzetben; Véletlenszerű kiválasztás ...
  • Pontos másolás Több cella a képletreferencia megváltoztatása nélkül; Automatikus referenciák létrehozása több lapra; Helyezze be a golyókat, Jelölőnégyzetek és még sok más ...
  • Kivonat szöveg, Szöveg hozzáadása, Eltávolítás pozíció szerint, Hely eltávolítása; Hozz létre és nyomtasson személyhívó részösszegeket; Konvertálás a cellatartalom és a megjegyzések között...
  • Szuper szűrő (mentse el és alkalmazza a szűrősémákat más lapokra); Haladó rendezés hónap / hét / nap, gyakoriság és egyebek szerint; Speciális szűrő félkövér, dőlt betűvel ...
  • Kombinálja a munkafüzeteket és a munkalapokat; Táblázatok egyesítése kulcsoszlopok alapján; Az adatok felosztása több lapra; Kötegelt konvertálás xls, xlsx és PDF...
  • Több mint 300 hatékony funkció. Támogatja az Office / Excel 2007-2021 és 365 verziókat. Minden nyelvet támogat. Könnyű üzembe helyezés vállalatában vagy szervezetében. Teljes funkciók 30 napos ingyenes próbaverzió. 60 napos pénzvisszafizetési garancia.
kte lap 201905

Az Office fül a füles felületet hozza az Office-ba, és sokkal könnyebbé teszi a munkáját

  • Füles szerkesztés és olvasás engedélyezése Wordben, Excelben és PowerPointban, Publisher, Access, Visio és Project.
  • Több dokumentum megnyitása és létrehozása ugyanazon ablak új lapjain, mint új ablakokban.
  • 50% -kal növeli a termelékenységet, és naponta több száz kattintással csökkenti az egér kattintását!
officetab alja
A megjegyzések rendezése szerint
Hozzászólások (11)
Még nincs értékelés. Legyen Ön az első, aki értékel!
A weboldal moderátora ezt a megjegyzést minimalizálta
A fenti kód nem működik, ha egy cella aktív. Azaz

1. írjon be egy értéket a cellába (ne nyomja meg az Enter vagy a tabulátor billentyűt)

2. minimalizáld az excelt.

Ebben az esetben a kód nem működik.
A weboldal moderátora ezt a megjegyzést minimalizálta
Ha egy külön munkafüzetben dolgozik azon a ponton, ahol a bezárási idő elérkezik, akkor azt a munkafüzetet zárja be, és nem az inaktívat. Ez megoldható a kód módosításával:

Dim CloseTime As Date
Dim WKB As String
Alidőbeállítás()
WKB = ActiveWorkbook.Name
CloseTime = Most + TimeValue("00:00:15")
On Error Resume Next
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=Igaz
End Sub
Sub TimeStop()
On Error Resume Next
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
Workbooks(WKB).Close Savechanges:=Igaz
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Ugyanezt vettem észre. És ugyanazt a megoldást találtam :-)
A weboldal moderátora ezt a megjegyzést minimalizálta
Időnként "futási idejű hiba" jelenik meg, amikor megnyitom azt a munkafüzetet, amelyben ez a kód be van építve. Amúgy ezt a kódot jobban megírni, hogy stabilabb legyen?
A weboldal moderátora ezt a megjegyzést minimalizálta
ragyogó köszönet
A weboldal moderátora ezt a megjegyzést minimalizálta
szia, szeretném beszúrni ezt a kódot egy másik kódba, például lejárati kódba ezzel a kóddal, hogyan tehetem...?
kód...követve
Private Sub Workbook_Open ()

Dim exdate As Date
Dim i mint egész

'módosítsa a lejárati dátum értékeit itt !!!
anul = 2019-es év
luna = 5 hónap
ziua = 16 'nap

exdate = dátum Sorozat (anul, luna, ziua)

Ha Dátum > exdate Akkor
MsgBox ("Az alkalmazás " & ThisWorkbook.Name & " lejárt !" & vbNewLine & vbNewLine _
& "A lejárati beállítás dátuma: " & exdate & " :)" & vbNewLine & vbNewLine _
& "A verzió megújításához forduljon a rendszergazdához!"), vbCritical, ThisWorkbook.Name

expired_file = ThisWorkbook.Path & "\" & ThisWorkbook.Name

Error GoTo ErrorHandler
Munkafüzetekkel (ThisWorkbook.Name)
Ha .Path <> "" Akkor

.Saved = Igaz
.ChangeFileAccess xlReadOnly

Öld meg az expired_file-t

'kérje le a bővítmény nevét, ha az addin és unistall addin
Ha Alkalmazás.Verzió >= 12 Akkor
i = 5
Egyéb: i = 4
Ha véget

Ha Right(ThisWorkbook.Name, i) = ".xlam" Vagy Right(ThisWorkbook.Name, i) = ".xla" Akkor
wbName = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - i)
'távolítsa el a bővítményt, ha telepítve van
Ha AddIns(wbName).Telepítve Akkor
AddIns(wbName).Installed = False
Ha véget
Ha véget

.Bezárás

Ha véget
Vége

Exit Sub

Ha véget

'MsgBox ("Van " & exdate - Dátum és "Nap van hátra")
Exit Sub

ErrorHandler:
MsgBox "Nem sikerült törölni a fájlt.."
Exit Sub

End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Ha egy külön munkafüzetben dolgozik azon a ponton, ahol a bezárási idő elérkezik, akkor azt a munkafüzetet zárja be, és nem az inaktívat. Ezt úgy lehet megoldani, hogy a kódot a következőkre állítja: - javítva és tesztelve az alábbi megjegyzésből - használja ezt a kódot:

Lépjen be a "Ez a munkafüzet"

Privát almunkafüzet_BeforeClose (Mégse logikai értékként)
Hívja a TimeStopot
End Sub
Private Sub Workbook_Open ()
Hívja az Időbeállítást
End Sub
Private Sub Workbook_SheetChange (ByVal Sh mint objektum, ByVal Target mint tartomány)
Hívja a TimeStopot
Hívja az Időbeállítást
End Sub


Lépjen be a "modulba":

Dim CloseTime As Date
Alidőbeállítás()
CloseTime = Most + TimeValue("00:10:00")
On Error Resume Next
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=Igaz
End Sub
Sub TimeStop()
On Error Resume Next
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
ThisWorkbook.Close Savechanges:=Igaz
End Sub


módosíthatja az időbeállítást a CloseTime = Now + TimeValue("00:10:00") módosításával - ez 10 percre van állítva, módosítsa a ("00:10:00") értéket tetszőleges időre, és működik.
A weboldal moderátora ezt a megjegyzést minimalizálta
Nem tudom, mi történt, de ez a megoldás már nem működik. Íme a megoldás, ami nekem bevált:

````
Dim resetCount As Long

Nyilvános almunkafüzet_Open()
On Error Resume Next
Set xWB = This Workbook
resetCount = 0
End Sub

Private Sub Workbook_SheetChange(ByVal Sh mint objektum, ByVal Target mint tartomány)Hiba esetén Folytatás Következő
vissza
End Sub

Sub Reset()On Error Folytatás a következőre
Statikus xCloseTime
Ha resetCount <> 0 Akkor
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", Schedule:=False
resetCount = resetCount + 1
xCloseTime = DateAdd("n", 15, Now)
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", Schedule:=True

Más
resetCount = resetCount + 1
xCloseTime = DateAdd("n", 15, Now)
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", Schedule:=True
Ha véget
End Sub
````
Ez ugyanazt a SaveWork1-et használja, mint:
````Sub SaveWork1()
Application.DisplayAlerts = Hamis
ThisWorkbook.Save
ThisWorkbook.Close

Application.DisplayAlerts = Igaz
End Sub

````
A weboldal moderátora ezt a megjegyzést minimalizálta
Ez remek. Van tippje egy felugró üzenetmező hozzáadásához, amely figyelmezteti a felhasználót a lap bezárására, és lehetőséget ad az időzítő visszaállítására?
A weboldal moderátora ezt a megjegyzést minimalizálta
Ha nem akarok szerkeszteni, és csak konzultálni szeretnék, a fájl továbbra is bezárul. Nem szabad bezárni. Újra kell kezdeni a számlálást, amikor kiválasztom a cellákat. Mi a megoldás?
A weboldal moderátora ezt a megjegyzést minimalizálta
Ha nem akarok szerkeszteni, és csak konzultálni szeretnék, a fájl továbbra is bezárul. Nem szabad bezárni. Újra kell kezdeni a számlálást, amikor kiválasztom a cellákat. Mi a megoldás?
Még senki sem írt megjegyzést
Hagyja meg észrevételeit
Feladás vendégként
×
Értékeld ezt a bejegyzést:
0   Karakterek
Javasolt helyek

Kövess minket

Copyright © 2009 - www.extendoffice.com. | Minden jog fenntartva. Powered by ExtendOffice. | Oldaltérkép
A Microsoft és az Office logó a Microsoft Corporation védjegyei vagy bejegyzett védjegyei az Egyesült Államokban és / vagy más országokban.
Sectigo SSL védi