2015-10-05 272 views
0

公平的警告 - 代码不是我自己的,所以任何想法都会欢迎如何改变它。宏只能在一台电脑上工作,但不能在另一台电脑上工作

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 

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

+0

两者前景相同的版本? 2010?或 – 0m3r

+0

iirc,默认情况下,Outlook VBA通​​常处于禁用状态,请尝试进入宏设置并检查安全选项。 –

+0

有时,如果您将** VbaProject.OTM **文件复制到其他计算机上,那台计算机需要打开VBE,然后展开模块然后退出,重新启动Outlook才能使宏工作。您可能需要添加'Debug.Print'行来帮助您查看是否没有执行任何操作。你签了宏吗? – PatricK

回答

0

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

你是否在另一台机器上的代码中出现错误?

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

的代码是基于浏览器的选择的项目:

Application.ActiveExplorer.Selection.Item(1) 

是选择不为空,所有的时间?

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

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

一般而言,VBA宏并不是为在多台PC上分发而设计的。如果您需要在多台机器上运行解决方案,则需要开发一个加载项。见Walkthrough: Creating Your First VSTO Add-In for Outlook

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

+0

所以 - (对不起,这么晚回复你),我已经在我自己的工作笔记本电脑(其他人是同事的笔记本电脑)上重新创建了它,并且它自行工作正常。通过它进行了一些测试会议,并且做了它应该做的事情。仍然在为什么它能在一个而不是另一个上运行。 尝试调试它无济于事,因为没有弹出一条消息。就像我说的,在我自己的机器上没有错误。但是,我是我工作场所的IT管理员,可能拥有比她更多的权利。然而,这个宏在一个点上工作,现在不工作。不知道为什么。 – user3761389

相关问题