2015-10-05 128 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

相關問題