宏可以在一台计算机上运行,​​但在另一台计

时间:2015-10-05 22:09:06

标签: vba outlook outlook-vba

公平警告 - 代码不是我自己的,所以任何想法都会受到欢迎,如何改变它。

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

这个很有意思。在我的电脑上,它工作得很好。但是,另一方面,它可以点击并点击,什么都不会发生。没有错误,没有弹出窗口,没有任何东西。所以,我知道代码是有效的,但有没有任何理由(权利?)完全相同的代码可以在一个而不是另一个上工作?

1 个答案:

答案 0 :(得分:0)

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

您是否在其他计算机上的代码中出现任何错误?

我建议从破坏属性和方法调用链开始,然后在不同的代码行上声明它们。因此,您将能够找到失败的属性或方法。

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

 If oRequest.MessageClass = "IPM.Schedule.Meeting.Request"

选择是不是一直都是空的?

<!DOCTYPE html>
<html>
    <head>
        <title><?php echo $viewModel->get('pageTitle'); ?></title>
    </head>
    <body>
        <?php require($this->viewFile); //index.php ?>
    </body>
</html>

选择是否包含具有指定消息类的第一个项目?

通常,VBA宏不适用于在多台PC上分发。如果您需要在多台计算机上运行解决方案,则需要开发一个加载项。请参阅Walkthrough: Creating Your First VSTO Add-In for Outlook

最后,您可能会发现Getting Started with VBA in Outlook 2010文章很有帮助。