Trong một bài đăng khác:
bạn Hhoang_56 có share cách hẹn giờ chạy code macro như bên dưới nhưng mình chạy thử thì không được.
Anh Em cho hỏi code dưới này có cần điều kiện gì không? và làm sao để hẹn giờ để file excel tự chạy code VBA được vậy? Mình xin cảm ơn
Note: file excel mình luôn luôn mở những vẫn không chạy
""
Private Sub Workbook_Open()
Application.OnTime TimeValue("7:05:00"), "Testing1"
End Sub
Tạm dừng VBA bằng cách sử dụng Wait, Sleep hoặc Vòng lặp Sẽ có nhiều lúc bạn cần tạm dừng VBA với một khoảng thời gian ngắn để chờ đợi một công việc nào đó hoàn tất, hoặc chờ người dùng khác cập nhật dữ liệu, hay chờ một macro khác hoàn thành xong, khi đó bạn có thể lựa chọn dùng Wait, Sleep...
Trong một bài đăng khác:
bạn Hhoang_56 có share cách hẹn giờ chạy code macro như bên dưới nhưng mình chạy thử thì không được.
Anh Em cho hỏi code dưới này có cần điều kiện gì không? và làm sao để hẹn giờ để file excel tự chạy code VBA được vậy? Mình xin cảm ơn
Note: file excel mình luôn luôn mở những vẫn không chạy
""
Private Sub Workbook_Open()
Application.OnTime TimeValue("7:05:00"), "Testing1"
End Sub
'Code này cho vào ThisWorkbook
Private Sub Workbook_Open()
Application.OnTime Now() + TimeValue("00:00:05"), "Testing1"
End Sub
'Code này cho vào Module
Sub Testing1()
MsgBox Now
Application.OnTime Now() + TimeValue("00:00:05"), "Testing1"
End Sub
Vì câu lệnh bị sai:
1. Code nằm trong Workbook nên code không bao giờ chạy.
2. Thời gian đặt bị sai
3. Vấn đề đặt Thời gian TimeValue("7:05:00") tức là bạn muốn đặt Macro chạy vào lúc 7h 5 phút sáng?
Nếu vậy thì cộng thời gian như thế này: (Date + VBA.IIF(time > TimeValue("7:05:00"),1, 0)) + TimeValue("7:05:00")
Hay là thời gian hiện tại cộng thêm VBA.Now + TimeValue("7:05:00")
Nếu code là: Application.OnTime TimeOut, "Testing1"
Thì sẽ tìm macro Testing1 trong module của cửa sổ được active.
Code trong Workbook:
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!" & ThisWorkbook.CodeName & ".Testing1"
Thì sẽ tìm macro Testing1 trong code Workbook của chính workbook chứa code.
Code Trong Module:
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!Testing1"
Thì sẽ tìm macro Testing1 trong module của chính workbook chứa code.
---------------------------------
PHP:
Private TimeOut As Date
Private Sub Workbook_Open()
TimeOut = VBA.Now +TimeValue("7:05:00")
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!" & ThisWorkbook.CodeName & ".Testing1"
End Sub
Private Sub Workbook_BeforeClose()
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!" & ThisWorkbook.CodeName & ".Testing1", , False
End Sub
Sub Testing1()
MsgBox Now
End Sub
--------------------------------
Nếu code bắt buộc phải chạy đúng giờ đã hẹn dù cho tắt file mở lại thì
sử dụng VBA.SaveSetting và VBA.GetSetting để lưu thời gian cần đặt.
Ví dụ:
PHP:
Private TimeOut As Date
Private Sub Workbook_Open()
TimeOut = VBA.GetSetting("MainApp", "TimeOut", "Time")
If cdec(TimeOut) < Now Then TimeOut = VBA.Now + TimeValue("7:05:00")
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!" & ThisWorkbook.CodeName & ".Testing1"
Call VBA.SaveSetting("MainApp", "TimeOut", "Time", CStr(TimeOut) )
End Sub
Private Sub Workbook_BeforeClose()
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!" & ThisWorkbook.CodeName & ".Testing1", , False
End Sub
Sub Testing1()
MsgBox Now
End Sub
---------------------------------
Cũng có thể không cần mở Excel, sử dụng câu lệch Command Line để hẹn giờ mở file Excel
'Code này cho vào ThisWorkbook
Private Sub Workbook_Open()
Application.OnTime Now() + TimeValue("00:00:05"), "Testing1"
End Sub
'Code này cho vào Module
Sub Testing1()
MsgBox Now
Application.OnTime Now() + TimeValue("00:00:05"), "Testing1"
End Sub
Cảm ơn bạn đã khai thông cho mình.
Hóa ra là do mình đặt code sai chỗ
Mình chỉ cần tới giờ đó nó chạy code VBA đã tạo sẵn thôi. nhưng sai ở chỗ mình đặt code hẹn giờ trong module luôn
cảm ơn bạn nhiều nhé
Vì câu lệnh bị sai:
1. Code nằm trong Workbook nên code không bao giờ chạy.
2. Thời gian đặt bị sai
3. Vấn đề đặt Thời gian TimeValue("7:05:00") tức là bạn muốn đặt Macro chạy vào lúc 7h 5 phút sáng?
Nếu vậy thì cộng thời gian như thế này: (Date + VBA.IIF(time > TimeValue("7:05:00"),1, 0)) + TimeValue("7:05:00")
Hay là thời gian hiện tại cộng thêm VBA.Now + TimeValue("7:05:00")
Nếu code là: Application.OnTime TimeOut, "Testing1"
Thì sẽ tìm macro Testing1 trong module của cửa sổ được active.
Code trong Workbook:
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!" & ThisWorkbook.CodeName & ".Testing1"
Thì sẽ tìm macro Testing1 trong code Workbook của chính workbook chứa code.
Code Trong Module:
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!Testing1"
Thì sẽ tìm macro Testing1 trong module của chính workbook chứa code.
---------------------------------
PHP:
Private TimeOut As Date
Private Sub Workbook_Open()
TimeOut = VBA.Now +TimeValue("7:05:00")
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!" & ThisWorkbook.CodeName & ".Testing1"
End Sub
Private Sub Workbook_BeforeClose()
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!" & ThisWorkbook.CodeName & ".Testing1", , False
End Sub
Sub Testing1()
MsgBox Now
End Sub
--------------------------------
Nếu code bắt buộc phải chạy đúng giờ đã hẹn dù cho tắt file mở lại thì
sử dụng VBA.SaveSetting và VBA.GetSetting để lưu thời gian cần đặt.
Ví dụ:
PHP:
Private TimeOut As Date
Private Sub Workbook_Open()
TimeOut = VBA.GetSetting("MainApp", "TimeOut", "Time")
If cdec(TimeOut) < Now Then TimeOut = VBA.Now + TimeValue("7:05:00")
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!" & ThisWorkbook.CodeName & ".Testing1"
Call VBA.SaveSetting("MainApp", "TimeOut", "Time", CStr(TimeOut) )
End Sub
Private Sub Workbook_BeforeClose()
Application.OnTime TimeOut, "'" & ThisWorkbook.Name & "'!" & ThisWorkbook.CodeName & ".Testing1", , False
End Sub
Sub Testing1()
MsgBox Now
End Sub
---------------------------------
Cũng có thể không cần mở Excel, sử dụng câu lệch Command Line để hẹn giờ mở file Excel
Cảm ơn bạn.
Mình có soạn 1 code VBA để chạy công thức rồi copy thành số.
Vấn đề là mình muốn chạy nó theo 2 khoảng thời gian nhất định trong ngày là 12h trưa và 18h tối.
Bạn có thể viết giùm mình được không. thanks