โซลูชันของ Yuval อาจพอเพียง แต่ถ้าการเปลี่ยนแปลงนั้น จำกัด เฉพาะเนื้อหาของเซลล์ ผู้สอบถามไม่ได้ระบุว่าเป็นกรณีนี้หรือไม่ อย่างไรก็ตาม: หากการเปลี่ยนแปลงที่คุณต้องการรับคือการเพิ่มเวิร์กชีท (อาจลบออก) ในเวิร์กบุ๊ก
เรียงลำดับของการแก้ปัญหาที่เปราะและแห้ว: เก็บแมโครไว้ใน PERSONAL.XLS (B) ที่ซ่อนอยู่ของคุณเพื่อดำเนินการสมุดงานเป็นระยะ (โดยการจัดตารางใหม่) สมุดงานจะปิดและเปิดใหม่ ควรพบ PERSONAL.XLS (B) ที่% USERPROFILE% \ AppData \ Roaming \ Microsoft \ Excel \ XLSTART \)
Sub wkbRefresher()
Dim refreshedWorkbook As Workbook
Dim WkBks As Workbooks
'full filepath
fPath = "c:\tmp\mutatingWorkbook.xls"
'in HH:MM:SS format:
refreshInterval = "00:05:00"
For i = 1 To Application.Workbooks.Count
Debug.Print (Application.Workbooks.Item(i).FullName)
If LCase(Application.Workbooks.Item(i).FullName) = LCase(fPath) Then
Debug.Print (" Yep thats the one! Lets refresh it.")
Application.Workbooks.Item(i).Close
'refreshedWorkbook = WkBks.Open(fPath, True, True)
Set refreshedWorkbook = Excel.Application.Workbooks.Open(fPath, True, True)
End If
Next i
' Use at your own risk: this is an "asynchronous", the execution cannot be stopped by merely pressing the stop button in the VBA interface.
' You might have to do something like put a break marker on the line OnTime line so that next time around, it doesn't respawn itself.
Application.OnTime Now + TimeValue(refreshInterval), "wkbRefresher"
End Sub
แน่นอนย่อยข้างต้นสามารถกำหนดพารามิเตอร์และ / หรือคุณสามารถแนบไปยังปุ่มแถบเครื่องมือที่กำหนดเองหรือบางสิ่งบางอย่าง เนื่องจากการบันทึกเวิร์กบุ๊กจะบันทึกแผ่นงานที่ใช้งานอยู่เซลล์ที่ใช้งาน ฯลฯ ข้อมูลสถานะคุณอาจต้องการรวมสองสามบรรทัดเพื่อบันทึกชื่อแผ่นงานที่ใช้งานที่คุณต้องการและเปิดใช้งานอีกครั้งในแต่ละครั้งหลังจากเปิดอีกครั้ง
อ้างอิง:
http://office.microsoft.com/en-us/excel-help/run-a-macro-HP010342865.aspx
http://msdn.microsoft.com/en-us/library/office/ff196165(v=office 0.14) .aspx
แม้ว่าฉันจะไม่ได้พยายามอย่างเต็มที่ แต่ดูเหมือนว่าจะเป็นการแนะนำที่มีประโยชน์มากหากคุณไม่เคยได้ยิน PERSONAL.XLS (B): http://www.rondebruin.nl/win/personal.htm