Vba 宏在一台计算机上工作,但在另一台计算机上不工作

Vba 宏在一台计算机上工作,但在另一台计算机上不工作,vba,outlook,Vba,Outlook,公平的警告-代码不是我自己的,因此任何关于如何更改它的想法都将受到欢迎 Public Sub ChangeMeeting() Dim oRequest As MeetingItem Dim oAppt As AppointmentItem Set oRequest = Application.ActiveExplorer.Selection.Item(1) If oRequest.MessageClass = "IPM.Schedule.Meeting.Request" Then Set o

公平的警告-代码不是我自己的,因此任何关于如何更改它的想法都将受到欢迎

Public Sub ChangeMeeting()

Dim oRequest As MeetingItem
Dim oAppt As AppointmentItem

Set oRequest = Application.ActiveExplorer.Selection.Item(1)
If oRequest.MessageClass = "IPM.Schedule.Meeting.Request" Then
Set oAppt = oRequest.GetAssociatedAppointment(True)

' use this to autoaccept
Dim oResponse
Set oResponse = oAppt.Respond(olMeetingAccepted, True)

oResponse.Send

' set fields on the appt.
With oAppt
' .Categories = "Slipstick"
.BusyStatus = olFree
.Save ' use .Display if you want to see the appt. and set the reminder yourself
End With

End If

'delete the request from the inbox
oRequest.Delete

End Sub

这个很有趣。在我的电脑上,它工作得很好。然而,在另一个上,它可以被点击,点击,什么也不会发生。没有错误,没有弹出窗口,什么都没有。所以,我知道这个代码是有效的,但是有什么理由可以证明它是正确的吗?是否完全相同的代码可以在其中一个上运行,而不能在另一个上运行?

首先,确保允许运行VBA宏。VBA宏是否在Outlook中运行?你试过调试它吗

你在另一台机器上的代码中有错误吗

我建议从打破属性和方法调用链开始,并在单独的代码行中声明它们。因此,您将能够找到失败的属性或方法

代码基于资源管理器中的选定项:

Application.ActiveExplorer.Selection.Item(1)
所选内容不是一直为空吗

 If oRequest.MessageClass = "IPM.Schedule.Meeting.Request"
所选内容是否包含具有指定消息类的第一项

一般来说,VBA宏不是为在多台PC上分发而设计的。如果需要在多台计算机上使用解决方案,则需要开发外接程序。看


最后,您可能会发现这篇文章很有帮助

两者的outlook版本相同吗?2010? ORIRC,默认情况下Outlook VBA通常处于禁用状态,请尝试进入宏设置并检查安全选项。有时,如果您将VbaProject.OTM文件复制到其他计算机,该计算机需要打开VBE,展开模块,然后退出,重新启动Outlook使宏正常工作。您可能需要添加Debug.Print行,以帮助查看是否未执行任何操作。你给宏签名了吗?宏没有签名,outlook在整个办公室都是一样的,我来看看安全选项。编辑:这是为了让某人免费接受约会。最可能的情况是,如果不满足条件。您可以可视化或使用msgbox oRequest.MessageClass吗?或者逐步完成代码?很抱歉这么晚才给你回复,我在自己的工作笔记本电脑上重新创建了它,另一台是同事的笔记本电脑,我自己可以正常工作。通过它运行了一些测试会议,它做了它应该做的。仍然不知道为什么它对其中一个有效而对另一个无效。没有尝试调试它,但没有效果,因为没有弹出一条消息。就像我说的,我自己的机器上没有错误。然而,我是我工作场所的IT管理员,可能比她拥有更多的权利。然而,宏曾一度起作用,但现在不起作用。不知道为什么。