我想从Excel工作表中更新共享日历。我对这个共享日历的拥有者的代码工作正常,但它对我来说失败了。日历已分享给我,我拥有完整的所有者权限。无法更新共享的非默认日历文件夹
我可以手动编辑日历但不存在任何问题,但想法是任何人都可以从此Excel表中运行宏来更新共享日历。下面是相关的代码,只是到故障点:
Sub UpdateSched()
Dim olApp As Outlook.Application
Dim olNameSpace As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder
Dim olFldrOwner As Outlook.Recipient
On Error Resume Next
' check if Outlook is running
Set olApp = GetObject("Outlook.Application")
If Err <> 0 Then
'if not running, start it
Set olApp = CreateObject("Outlook.Application")
End If
On Error GoTo 0
Set olNameSpace = olApp.GetNamespace("MAPI")
Set olFldrOwner = olNameSpace.CreateRecipient("ownrAlias")
olFldrOwner.Resolve
Set olFolder = Nothing
If olFldrOwner.Resolved Then
Set olFolder = olNameSpace.GetSharedDefaultFolder(olFldrOwner, olFolderCalendar)
' If olFolder Is Nothing Then
' Debug.Print "Nothing"
' Else
' Debug.Print olFolder.Name '<-Error here if the if-block is run
' End If
'******************************
Set olFolder = olFolder.Folders("Transport Sched") '<-Object Not Found Error
'******************************
End If
'Code below updates appointments on the shared calendar
完整的错误是“尝试的操作失败。无法找到对象'
为了测试,我添加了注释掉的块。这让我觉得这个错误实际上可能在上一行。当这个块被取消注释时,在Else之后的代码错误出现在同一个错误上(同样的错误)。所以olFolder对象并不是什么都没有,但是它找不到。
再次,当日历的所有者运行它时,这一切都可以正常工作。它在我的“共享日历”下,我收到错误。如果我使用相同的代码来更新我创建的日历,那么它也可以正常工作,这在“我的日历”下。
这对于找到共享日历的正确文件夹有问题,对吧?该文件夹的路径不应该改变,所以我可以对它进行硬编码以适合每个人,这是可能的吗?
试一下这个'设置olFolder = olNameSpace.GetSharedDefaultFolder(olFldrOwner,olFolderCalendar).Folders(“运输附表”)'让我知道 – 0m3r
当我尝试如你所说,现在无法上线,以同样“没有找到对象'错误。这实际上是这条线的原始写法,在阅读另一个答案之后,我已经将它分成两行来帮助调试。 – jvarnerus