хорошо, так что я могу быть обжором здесь для наказания и пыток. очень плохо знаком с VBA в Excel, так что будьте добры, лол Я работаю в сфере здравоохранения, а работа с кодом - это то, с чем я начал коллегу, работая в электронных таблицах. просто делаю гугл и YouTube видео, учу себя, что делает что. извиняюсь за чудовище, которое ниже. я знаю, что в объявлениях есть дополнительные вещи, они написаны для других макросов.
в Outlook, у меня есть несколько календарей, на которые я планирую разные вещи. Я создал электронную таблицу, куда я вставляю информацию о сайте, и у меня есть макрокнопки, которые генерируют встречи и электронные письма для меня. У меня есть код, в котором будет назначена встреча, однако все это идет в мой основной календарь. Я пытаюсь записаться на прием в другие мои календари. Я читал о функциях MAPI, но я не могу заставить его работать. расположение по адресу \ myemail@me.com \ Calendar, если это поможет. Название календаря SVN Calendar. Я работал над этим пару недель и продолжаю рисовать бланк. любая помощь очень ценится.
Dim olApp As Outlook.Application
Dim olEmail As Outlook.MailItem
Dim olCal As Outlook.AppointmentItem
Dim olFolder As Outlook.Folder
Dim RequiredAttendee, OptionalAttendee, ResourceAttendee As Outlook.Recipient
Dim rtf() As Byte
Dim rngTo As Range
Dim rngCC As Range
Dim rngSUB As Range
Dim rngCALloc As Range
Dim rngCALstart As Range
Dim rngCALend As Range
Dim rngBody As Range
Dim myItem As Object
Sub newTestCreateCalendarUSA1()
'Testing calendar to other calendar than main. i.e. SVN Calendar. can't identify the actual calendar. damnit.'
Set olApp = New Outlook.Application
Set m = olApp.CreateItem(olMailItem)
Set appt = olApp.CreateItem(olAppointmentItem)
With ActiveSheet
Set rngCC = .Range("I34")
Set rngCALloc = .Range("I5")
Set rngCALstart = .Range("I11")
Set rngCALend = .Range("I12")
Set rngSUB = .Range("I33")
Set rngSite = .Range("C2")
Set rngLoc = .Range("C4")
Set rngTYPE = .Range("B23")
Set rngGON = .Range("C23")
Set rngPurpose = .Range("C21")
Set rngGoals = .Range("C22")
Set rngDate = .Range("I1")
Set rngDateStart = .Range("I8")
Set rngDateEnd = .Range("I9")
Set rngTime = .Range("I10")
Set rngCAS = .Range("C26")
End With
MsgBox "Ensure all attendees are correct prior to sending invite."
appt.MeetingStatus = olMeeting
appt.RequiredAttendees = rngCC.Value
appt.Subject = rngSUB.Value
appt.Location = rngCALloc.Value
appt.Start = rngCALstart.Value
appt.End = rngCALend.Value
appt.AllDayEvent = True
m.BodyFormat = olFormatHTML
m.HTMLBody = Range("I31").Value
m.GetInspector().WordEditor.Range.FormattedText.Copy
appt.GetInspector().WordEditor.Range.FormattedText.Paste
appt.Display
m.Close False
End Sub
Редактировать: спасибо за указание следить за деревом папок, Нитон. Я пытался понять всю вещь GetNameSpace, но просто не мог заставить его работать. это то, что я получаю за то, что я не программист, я думаю ...
я нашел другой код для вставки, и он назначил мне встречу в правильном календаре.
Sub SVN_Calendar_Invite ()
пробный запуск Календаря SVN с другим кодом
Dim oApp As Object
Dim oNameSpace As Namespace
Dim oFolder As Object
Set oApp = New Outlook.Application
Set oNameSpace = oApp.GetNamespace("MAPI")
Set oFolder = oNameSpace.GetFolderFromID("0000000098F32312526B334EAEC97D94705E33FB0100C964D8D325E3554DA24A72FB876E3F600001912394000000")
With ActiveSheet
Set rngCC = .Range("I34")
Set rngCALloc = .Range("I5")
Set rngCALstart = .Range("I11")
Set rngCALend = .Range("I12")
Set rngSUB = .Range("I33")
Set rngSite = .Range("C2")
Set rngLoc = .Range("C4")
Set rngTYPE = .Range("B23")
Set rngGON = .Range("C23")
Set rngPurpose = .Range("C21")
Set rngGoals = .Range("C22")
Set rngDate = .Range("I1")
Set rngDateStart = .Range("I8")
Set rngDateEnd = .Range("I9")
Set rngTime = .Range("I10")
Set rngCAS = .Range("C26")
End With
With oFolder
Set olApt = oApp.CreateItem(olAppointmentItem)
With olApt
.AllDayEvent = True
.RequiredAttendees = rngCC.Value
.Start = rngDateStart.Value
.End = rngDateEnd.Value
.Subject = rngSUB.Value
.Location = rngLoc.Value
.Body = "The body of your appointment note"
.BusyStatus = olFree
.Save
.Move oFolder
End With
Set olNS = Nothing
Set olApp = Nothing
Set olApt = Nothing
End With
End Sub
У меня сейчас пара проблем. 1 - если я использую .Display, чтобы вызвать элемент календаря, чтобы просмотреть его, он не отображается вообще. 2 - несмотря на то, что это событие на весь день, и ячейки разделены на 3 дня, вычитается конечная дата на 1 день. 3- Я должен пригласить участников вручную, что лишает их цели.