早上好,
我想将Excel电子表格与Outlook日历同步。
此电子表格每5-10分钟更新一次。是否可以设置一些定期更新,或者我应该手动完成所有操作?
我在网上找到了很多例子,展示了如何将Excel数据导出到Outlook,但只有一个操作,必须重复。
这里提供了一个合理的选择:https://classroom.synonym.com/sync-yahoo-calendar-android-device-8556.html但这与我想要的完全相反,因为它将日历嵌入到Excel中。我想链接Excel孢子表与Outlook日历。
有没有办法做到这一点,即通过VBA、PHP、SQL等?
通常编程这样的操作可以通过两种方式完成:轮询或事件驱动。
轮询意味着使用计时器在每一段时间内重复进行工作。搜索"VBA"one_answers"计时器"。
事件驱动意味着您将订阅某个事件。当事情发生变化时,另一方会提出一个事件。就像订阅报纸一样:当世界上发生什么事情时,报童送报纸。当你听到或看到报童时,你会走到邮箱前清空它
通常,事件驱动是最漂亮的解决方案,因为它不需要大量的CPU(以报纸为例,你可以坐下来放松,直到报纸送达(。但是,当您进行轮询时,每次都必须检查邮箱(日历(。
这是一个Items.ItemChange事件,关于项目何时发生更改。我希望它能满足你的需要。如果您想更好地了解它是如何工作的,请搜索"事件处理"。
如果链接断开,下面是该页面的示例:
Public WithEvents myOlItems As Outlook.Items
Public Sub Initialize_handler()
Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items
End Sub
Private Sub myOlItems_ItemChange(ByVal Item As Object)
Dim prompt As String
If VBA.Format(Item.Start, "h") >= "17" And Item.Sensitivity <> olPrivate Then
prompt = "Appointment occurs after hours. Mark it private?"
If MsgBox(prompt, vbYesNo + vbQuestion) = vbYes Then
Item.Sensitivity = olPrivate
Item.Display
End If
End If
End Sub