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

จะบันทึกและปิดสมุดงานหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่งได้อย่างไร?

ในบางครั้งคุณอาจปิดสมุดงานโดยไม่ได้ตั้งใจเมื่อคุณยุ่งกับงานอื่น ๆ เป็นเวลานานซึ่งอาจสูญเสียข้อมูลสำคัญบางอย่างในสมุดงาน มีเคล็ดลับในการบันทึกและปิดสมุดงานโดยอัตโนมัติหรือไม่หากคุณปิดใช้งานเป็นระยะเวลาหนึ่ง

บันทึกและปิดสมุดงานโดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่งด้วย VBA


ลูกศรสีฟ้าฟองขวา บันทึกและปิดสมุดงานโดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่งด้วย VBA

ไม่มีฟังก์ชันในตัวใน Excel เพื่อแก้ปัญหานี้ แต่ฉันสามารถแนะนำรหัสมาโครซึ่งสามารถช่วยคุณในการบันทึกและปิดสมุดงานหลังจากไม่มีการใช้งานในช่วงเวลาหนึ่ง

1. เปิดใช้งานสมุดงานที่คุณต้องการบันทึกและปิดโดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นเวลาหนึ่งวินาทีแล้วกด Alt + F11 กุญแจเพื่อเปิด Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง

2 คลิก สิ่งที่ใส่เข้าไป > โมดูล เพื่อสร้าง a โมดูล สคริปต์และวางโค้ดด้านล่างลงไป ดูภาพหน้าจอ:

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 บันทึกปิดสมุดงานหลังจากไม่มีการใช้งาน 1

3. จากนั้นใน นักสำรวจโครงการ บานหน้าต่างให้ดับเบิลคลิก สมุดงานนี้และวางโค้ดด้านล่างลงในสคริปต์ด้านข้าง ดูภาพหน้าจอ:

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 บันทึกปิดสมุดงานหลังจากไม่มีการใช้งาน 2

4. ไปดับเบิลคลิกที่โมดูลที่คุณใส่ในขั้นตอนที่ 2 แล้วกด F5 กุญแจสำคัญในการเรียกใช้รหัส ดูภาพหน้าจอ:
doc บันทึกปิดสมุดงานหลังจากไม่มีการใช้งาน 3

5. หลังจากนั้น 15 วินาทีจะมีกล่องโต้ตอบปรากฏขึ้นเพื่อเตือนให้คุณบันทึกสมุดงานแล้วคลิก ใช่ เพื่อบันทึกและปิดสมุดงาน
doc บันทึกปิดสมุดงานหลังจากไม่มีการใช้งาน 4

ทิปส์:

(1) ในรหัสแรกคุณสามารถเปลี่ยนเวลาที่ไม่มีการใช้งานเป็นเวลาอื่นในสตริงนี้: ตอนนี้ + TimeValue ("00:00:15")

(2) หากคุณไม่เคยบันทึกสมุดงานมาก่อนไฟล์ บันทึกเป็น กล่องโต้ตอบจะปรากฏขึ้นในตอนแรกและขอให้คุณบันทึก
doc บันทึกปิดสมุดงานหลังจากไม่มีการใช้งาน 5


ดี ปกป้องแผ่นงาน

Kutools สำหรับ Excel's ปกป้องแผ่นงาน ฟังก์ชันสามารถปกป้องแผ่นงานหลายแผ่นหรือทั้งสมุดงานพร้อมกันได้อย่างรวดเร็ว
doc ป้องกันแผ่นงานหลายแผ่น

เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel ช่วยแก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

  • นำมาใช้ใหม่: ใส่อย่างรวดเร็ว สูตรที่ซับซ้อนแผนภูมิ และสิ่งที่คุณเคยใช้มาก่อน เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ โดยไม่สูญเสียข้อมูล แยกเนื้อหาของเซลล์ รวมแถว / คอลัมน์ที่ซ้ำกัน... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • คุณสมบัติที่ทรงพลังมากกว่า 300 รายการ. รองรับ Office / Excel 2007-2019 และ 365 รองรับทุกภาษา ใช้งานง่ายในองค์กรหรือองค์กรของคุณ ทดลองใช้ฟรี 30 วันเต็ม รับประกันคืนเงิน 60 วัน
kte แท็บ 201905

แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มผลผลิตของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (11)
ยังไม่มีการให้คะแนน เป็นคนแรกที่ให้คะแนน!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
รหัสด้านบนไม่ทำงานเมื่อเซลล์ทำงานอยู่ นั่นคือ

1. ป้อนค่าในเซลล์ (อย่ากด Enter หรือ tab)

2. ย่อ excel ให้เล็กสุด

ในกรณีนี้รหัสไม่ทำงาน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
หากคุณกำลังทำงานในเวิร์กบุ๊กแยกต่างหาก ณ จุดที่ใกล้ถึงเวลาปิด เวิร์กบุ๊กนั้นจะปิดเวิร์กบุ๊กนั้น ไม่ใช่เวิร์กบุ๊กที่ไม่ได้ใช้งาน ซึ่งสามารถแก้ไขได้โดยการปรับรหัสเป็น:

Dim CloseTime เป็นวันที่
หรี่ WKB เป็นสตริง
การตั้งค่าเวลาย่อย ()
WKB = ActiveWorkbook.Name
CloseTime = ตอนนี้ + TimeValue("00:00:15")
เกี่ยวกับข้อผิดพลาดต่อไป
Application.OnTime EarliestTime:=ปิดเวลา, _
ขั้นตอน:="SavedAndClose", กำหนดการ:=True
ย่อยสิ้นสุด
ย่อย TimeStop()
เกี่ยวกับข้อผิดพลาดต่อไป
Application.OnTime EarliestTime:=ปิดเวลา, _
ขั้นตอน:="SavedAndClose", กำหนดการ:=False
ย่อยสิ้นสุด
บันทึกย่อยแล้วปิด()
สมุดงาน(WKB).ปิด บันทึกการเปลี่ยนแปลง:=True
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันสังเกตเห็นสิ่งเดียวกัน และพบวิธีแก้ปัญหาเดียวกัน :-)
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
บางครั้งฉันพบ "ข้อผิดพลาดเวลาทำงาน" เมื่อเปิดสมุดงานที่มีรหัสนี้อยู่ภายใน ยังไงก็ต้องเขียนโค้ดนี้ให้ดีขึ้นเพื่อให้เสถียรขึ้น?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณที่ยอดเยี่ยม
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันต้องการแทรกรหัสนี้ในรหัสอื่นเช่นรหัสหมดอายุด้วยรหัสนี้ฉันจะทำอย่างไร....?
รหัสคือ...กำลังติดตาม
สมุดงานย่อยส่วนตัว_Open()

Dim exdate เป็นวันที่
Dim ฉันเป็นจำนวนเต็ม

'แก้ไขค่าวันหมดอายุได้ที่นี่ !!!
anul = 2019 'ปี
ลูน่า = 5 'เดือน
ziua = 16 'วัน

exdate = DateSerial (anul, luna, ziua)

ถ้า Date > exdate แล้ว
MsgBox ("แอปพลิเคชัน " & ThisWorkbook.Name & " หมดอายุแล้ว !" & vbNewLine & vbNewLine _
& "วันที่ตั้งค่าการหมดอายุคือ: " & exdate & " :)" & vbNewLine & vbNewLine _
& "ติดต่อผู้ดูแลระบบเพื่อต่ออายุเวอร์ชัน!"), vbCritical, ThisWorkbook.Name

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

เกี่ยวกับข้อผิดพลาด GoTo ErrorHandler
ด้วยสมุดงาน(ThisWorkbook.Name)
ถ้า .Path <> "" แล้ว

.Saved = จริง
.ChangeFileAccess xlReadOnly

ฆ่า expired_file

'รับชื่อของ addin ถ้าเป็น addin และ unistall addin
ถ้า Application.Version >= 12 แล้ว
i = 5
อย่างอื่น: i = 4
End If

ถ้าใช่ (ThisWorkbook.Name, i) = ".xlam" หรือ Right (ThisWorkbook.Name, i) = ".xla" แล้ว
wbName = ซ้าย (ThisWorkbook.Name, Len (ThisWorkbook.Name) - i)
'ถอนการติดตั้ง addin หากมีการติดตั้ง
ถ้า AddIns(wbName).Installed แล้ว
AddIns (wbName) ติดตั้ง = เท็จ
End If
End If

.ปิด I

End If
จบด้วย

ออกจาก Sub

End If

'MsgBox ("คุณมี " & exdate - วันที่ & "วันที่เหลือ")
ออกจาก Sub

ตัวจัดการข้อผิดพลาด:
MsgBox "ไม่สามารถลบไฟล์.. "
ออกจาก Sub

ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
หากคุณกำลังทำงานในเวิร์กบุ๊กแยกต่างหาก ณ จุดที่ใกล้ถึงเวลาปิด เวิร์กบุ๊กนั้นจะปิดเวิร์กบุ๊กนั้น ไม่ใช่เวิร์กบุ๊กที่ไม่ได้ใช้งาน ซึ่งสามารถแก้ไขได้โดยการปรับโค้ดเป็น: - แก้ไขและทดสอบจากความคิดเห็นด้านล่าง - ใช้โค้ดนี้:

เข้าสู่ "สมุดงานนี้"

สมุดงานย่อยส่วนตัว_ก่อนปิด(ยกเลิกเป็นบูลีน)
โทร TimeStop
ย่อยสิ้นสุด
สมุดงานย่อยส่วนตัว_Open()
ตั้งเวลาโทร
ย่อยสิ้นสุด
สมุดงานย่อยส่วนตัว_SheetChange (ByVal Sh As Object, ByVal Target As Range)
โทร TimeStop
ตั้งเวลาโทร
ย่อยสิ้นสุด


เข้าสู่ "โมดูล":

Dim CloseTime เป็นวันที่
การตั้งค่าเวลาย่อย ()
CloseTime = ตอนนี้ + TimeValue("00:10:00")
เกี่ยวกับข้อผิดพลาดต่อไป
Application.OnTime EarliestTime:=ปิดเวลา, _
ขั้นตอน:="SavedAndClose", กำหนดการ:=True
ย่อยสิ้นสุด
ย่อย TimeStop()
เกี่ยวกับข้อผิดพลาดต่อไป
Application.OnTime EarliestTime:=ปิดเวลา, _
ขั้นตอน:="SavedAndClose", กำหนดการ:=False
ย่อยสิ้นสุด
บันทึกย่อยแล้วปิด()
ThisWorkbook.Close บันทึกการเปลี่ยนแปลง:=True
ย่อยสิ้นสุด


คุณสามารถเปลี่ยนการตั้งค่าเวลาได้โดยเปลี่ยน CloseTime = Now + TimeValue("00:10:00") - ตั้งค่าเป็น 10 นาที เปลี่ยน ("00:10:00") เป็นเวลาใดก็ได้ที่คุณต้องการและใช้งานได้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันไม่แน่ใจว่าเกิดอะไรขึ้น แต่วิธีนี้ใช้ไม่ได้อีกต่อไป นี่คือวิธีแก้ปัญหานี้ที่เหมาะกับฉัน:

```
Dim resetCount As Long

สมุดงานย่อยสาธารณะ_Open()
เกี่ยวกับข้อผิดพลาดต่อไป
ตั้งค่า xWB = ThisWorkbook
รีเซ็ตจำนวน = 0
ย่อยสิ้นสุด

Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) เกิดข้อผิดพลาดต่อ ดำเนินการต่อ
รีเซ็ต
ย่อยสิ้นสุด

รีเซ็ตย่อย()เมื่อเกิดข้อผิดพลาด ดำเนินการต่อ ต่อไป
xCloseTime แบบคงที่
ถ้า resetCount <> 0 แล้ว
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", กำหนดการ:=False
resetCount = รีเซ็ตจำนวน + 1
xCloseTime = DateAdd("n", 15, ตอนนี้)
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", กำหนดการ:=True

อื่น
resetCount = รีเซ็ตจำนวน + 1
xCloseTime = DateAdd("n", 15, ตอนนี้)
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", กำหนดการ:=True
End If
ย่อยสิ้นสุด
```
นี่ใช้ SaveWork1 เดียวกันกับ:
````ย่อย SaveWork1()
Application.DisplayAlerts = เท็จ
สมุดงานนี้บันทึก
สมุดงานนี้ปิด

Application.DisplayAlerts = จริง
ย่อยสิ้นสุด

```
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
นี้เป็นสิ่งที่ดี เคล็ดลับในการเพิ่มกล่องข้อความป๊อปอัปที่จะเตือนผู้ใช้ว่าแผ่นงานกำลังจะปิดและให้ตัวเลือกในการรีเซ็ตตัวจับเวลาหรือไม่
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เมื่อฉันไม่ต้องการแก้ไขและต้องการปรึกษา ไฟล์ยังคงปิดอยู่ มันไม่ควรปิด ควรเริ่มนับใหม่เมื่อฉันเลือกเซลล์ ทางออกคืออะไร?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เมื่อฉันไม่ต้องการแก้ไขและต้องการปรึกษา ไฟล์ยังคงปิดอยู่ มันไม่ควรปิด ควรเริ่มนับใหม่เมื่อฉันเลือกเซลล์ ทางออกคืออะไร?
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ