轉換此VBA到VBS不應該是困難的一個例子。 看看http://www.techsupportforum.com/forums/f128/solved-script-to-delete-outlook-calendar-entries-542865.html 與url建議不同的是,如何使用普通Vbscript將約會(本例中爲節假日)添加到Outlook日曆中。 我在這裏發佈代碼以防它消失。
您應該保存帶有.vbs擴展名的代碼(例如add_calendar_item.vbs)並提前聲明Outlook常量。在vbscript中不能使用「as」聲明某些類型的變量。 使用cscript.exe add_calendar_item.vbs
爲了更容易掉落的字典和seachAppts一部分,你的VBA樣品中只使用一個像約好運行在CMD控制檯.vbs文件。
嘗試使用此代碼
Const olFolderCalendar = 9
Const olAppointmentItem = 1
Const olOutOfOffice = 3
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objCalendar = objNamespace.GetDefaultFolder(olFolderCalendar)
Set objApptItems = objCalendar.Items
objApptItems.IncludeRecurrences = True
objApptItems.Sort "[Start]"
Set objHoliday = objOutlook.CreateItem(olAppointmentItem)
objHoliday.Subject = "Boxing Day"
objHoliday.Start = "December 26, 2017" & " 9:00 AM"
objHoliday.End = "December 26, 2017" & " 10:00 AM"
objHoliday.AllDayEvent = True
objHoliday.ReminderSet = False
objHoliday.BusyStatus = olOutOfOffice
objHoliday.Save
以供參考原碼
Const olFolderCalendar = 9
Const olAppointmentItem = 1
Const olOutOfOffice = 3
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objCalendar = objNamespace.GetDefaultFolder(olFolderCalendar)
Set objApptItems = objCalendar.Items
objApptItems.IncludeRecurrences = True
objApptItems.Sort "[Start]"
'' List Appointments to add
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "November 24, 2010", "Thanksgiving"
objDictionary.Add "November 25, 2010", "Thanksgiving"
objDictionary.Add "December 25, 2010", "Christmas Day"
objDictionary.Add "December 26, 2010", "Boxing Day"
objDictionary.Add "November 24, 2011", "Thanksgiving"
objDictionary.Add "November 25, 2011", "Thanksgiving"
objDictionary.Add "December 25, 2011", "Christmas Day"
objDictionary.Add "December 26, 2011", "Boxing Day"
colKeys = objDictionary.Keys
For Each strKey in colKeys
dtmHolidayDate = strKey
strHolidayName = objDictionary.Item(strKey)
'' Check if it already is on the Calendar
Return = SearchAppts(strHolidayName, FormatDateTime(dtmHolidayDate, vbShortDate))
If Return = False Then
Set objHoliday = objOutlook.CreateItem(olAppointmentItem)
objHoliday.Subject = strHolidayName
objHoliday.Start = dtmHolidayDate & " 9:00 AM"
objHoliday.End = dtmHolidayDate & " 10:00 AM"
objHoliday.AllDayEvent = True
objHoliday.ReminderSet = False
objHoliday.BusyStatus = olOutOfOffice
objHoliday.Save
End If
Next
'' Search Function
Function SearchAppts(ByVal strName, strDate)
SearchAppts = False
Set objAppointment = objApptItems.GetFirst
While TypeName(objAppointment) <> "Nothing"
If TypeName(objAppointment) = "AppointmentItem" then
If StrComp(objAppointment, strName,1) = 0 Then
If DateDiff("D", objAppointment.Start, strDate) = 0 Then
SearchAppts = True
Exit Function
End If
End If
End If
Set objAppointment = objApptItems.GetNext
Wend
End Function
嘿彼得,感謝所有發佈的信息。實際上我應該在原始文章中提到過這一點,但我可以創建一個VBscript代碼,將會議添加到默認日曆中。我無法得到的部分是編輯該代碼,並讓它將會議添加到特定的日曆。不過,我會替換我設置的代碼和您發佈的代碼。這個更清潔!任何建議讓它發佈到不同的日曆,但? – Rami
是的,應該是像'Set objCalendar = objNamespace.GetDefaultFolder(olFolderCalendar).Parent.Folders(「otherCalendar」)'其中otherCalendar將是其他日曆文件夾的名稱 – peter
嗯,我給它一個鏡頭,並給予以下錯誤:「嘗試的操作失敗,無法找到對象。」我也試過'Set objCalendar = objNamespace.GetDefaultFolder(olFolderCalendar).Folders(「Test」)'這段代碼已經過去了,但它仍然將會議添加到默認日曆。 – Rami