ตามนี้ ผมยังแก้ error เมื่อปิดไฟล์ยังไม่ได้เลย ทั้งที่ประกาศ nTime เป็น Public แล้ว ขอรบกวนด้วยครับ
ThisWorkbook
Code: Select all
Public nTime As Double
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime nTime, "SaveFile", , False
End Sub
Private Sub Workbook_Open()
Call SaveFile
End Sub
Module1
Code: Select all
Sub SaveFile()
Dim nTime As Date
nTime = Now + TimeValue("00:01:00") ' currently its 1 min change it
Application.OnTime nTime, "SaveFile"
Call Copy_Data
End Sub
Sub Copy_Data()
Dim wk As Workbook, wb As Workbook
Dim CurrBook As Workbook, CheckFile As Boolean
For Each wb In Workbooks
If wb.Name = "Link Data.xlsx" Then CheckFile = True
Next wb
Set CurrBook = ThisWorkbook
If CheckFile = True Then
Set wk = Workbooks("Link Data.xlsx")
Else
Set wk = Workbooks.Open("D:\SET Backup\Link Data.xlsx")
End If
wk.Sheets(1).Range("xfd2").End(xlToLeft).Offset(-1, 1).Value = Format(Now, "yyyy-mm-dd hh-mm-ss")
CurrBook.Sheets(3).Range("d2:d51").Copy
wk.Sheets(1).Range("xfd2").End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues
CurrBook.Sheets(3).Range("j2:j51").Copy
wk.Sheets(1).Range("xfd2").End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues
wk.Sheets(2).Range("xfd2").End(xlToLeft).Offset(-1, 1).Value = Format(Now, "yyyy-mm-dd hh-mm-ss")
CurrBook.Sheets(3).Range("d56:d105").Copy
wk.Sheets(2).Range("xfd2").End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues
CurrBook.Sheets(3).Range("j56:j105").Copy
wk.Sheets(2).Range("xfd2").End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues
wk.Sheets(3).Range("xfd2").End(xlToLeft).Offset(-1, 1).Value = Format(Now, "yyyy-mm-dd hh-mm-ss")
CurrBook.Sheets(4).Range("d2:d51").Copy
wk.Sheets(3).Range("xfd2").End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues
CurrBook.Sheets(4).Range("j2:j51").Copy
wk.Sheets(3).Range("xfd2").End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues
wk.Sheets(4).Range("xfd2").End(xlToLeft).Offset(-1, 1).Value = Format(Now, "yyyy-mm-dd hh-mm-ss")
CurrBook.Sheets(4).Range("d56:d105").Copy
wk.Sheets(4).Range("xfd2").End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues
CurrBook.Sheets(4).Range("j56:j105").Copy
wk.Sheets(4).Range("xfd2").End(xlToLeft).Offset(0, 1).PasteSpecial xlPasteValues
wk.Save
'wk.Close
End Sub