Thắc mắc về code hẹn giờ trong VBA

Liên hệ QC

mraleno

Thành viên chính thức
Tham gia
1/12/09
Bài viết
68
Được thích
18
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

Sub Testing1()
MsgBox Now
End Sub
""
 
Bài này chắc đúng cái bạn cần nè
 
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

Sub Testing1()
MsgBox Now
End Sub
""
Sửa lại thế này xem sao.
Mã:
'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
 
Lần chỉnh sửa cuối:
Sửa lại thế này xem sao.
Mã:
'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é
Bài đã được tự động gộp:

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
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom