我有Access宏,它运行一系列查询,形成表格,并将这些表格发送给多个收件人。这很好,但我越来越多地被要求在一周的某一天提供越来越多的报告。
我可以在Outlook中运行VBA以在某一天运行Access宏,而不是使用我的日历来提醒我打开Access并运行这些宏吗?
答案 0 :(得分:1)
我可以在Outlook中运行VBA以在某一天运行Access宏,而不是使用我的日历来提醒我打开Access并运行这些宏吗?
您可以使用.BAT文件和Windows任务计划程序执行此操作,但您也可以使用Outlook VBA执行此操作。我有一些具有这个目的的日历事件,用于执行代码和清除提醒。
首先,您需要添加一个事件处理程序,以便在设置提醒时触发。
Private WithEvents olRemind As Outlook.Reminders
然后,您需要初始化WithEvents
。每次提醒都会发生这种情况,因为我有时会破坏代码或硬停止,这会丢失事件处理程序。
Private Sub Application_Reminder(ByVal Item As Object)
Set olRemind = Outlook.Reminders
End Sub
然后,您想要在日历上处理该事件。我的设置方式是为想要触发的事件添加特定类别。这有助于使我的日历更清晰。你可以通过各种方式做到这一点。
然后我也解除了提醒,因此它没有出现。
'fire off automatic macros based on recurring reminders
Private Sub olRemind_BeforeReminderShow(Cancel As Boolean)
Dim objRem As Reminder
For Each objRem In olRemind
'get categories
Dim rmdrCategories As String
rmdrCategories = objRem.Item.categories
'call the macro based on category
If InStr(rmdrCategories, "whateverYouWantTheReminder") > 0 Then
'only run if this reminder is visible
If objRem.IsVisible Then
'This code is specific to whatever macro you want to run
Dim mydb As Object
Set mydb = GetObject("...pathToDatabase.mdb")
mydb.Application.Run "YourMacroName"
mydb.Application.Quit
Set mydb = Nothing
objRem.Dismiss
Cancel = True
End If
End If
Next objRem
End Sub