Создайте встречу с необходимыми посетителями в Lotus Notes, используя VBA в Access 2013 - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь создать журнал проверок для инвентаризации в Access 2013. В ходе этого процесса вы создадите встречу на ожидаемую дату возвращения в календаре Lotus Notes 9.Я нашел достаточно примеров, чтобы сделать это успешно.Однако я застреваю при попытке добавить людей в поле «RequiredAttendees».Я почти уверен, что использую правильное имя поля, но получаю следующую ошибку:

Ошибка времени выполнения '-2147417851 (80010105)': ошибка автоматизации.Сервер выдал исключение.

Все остальное работает нормально, кроме части, которая пытается добавить посетителей.Я знаю, что Lotus Notes 9 старый, и я знаю, что Access 2013 - старый, но это те инструменты, с которыми мне необходимо работать.Любая помощь будет оценена.

Public Function test() As Variant

Dim StartTime As Date
Dim MailDbName As String
Dim CalenDoc As Object
Dim WorkSpace As Object
Dim AppDate As String
Dim AppTime As String
Dim Subject As String

Set WorkSpace = CreateObject("Notes.NOTESUIWORKSPACE")

AppDate = InputBox(Prompt:="Enter the return date:")
'Subject = InputBox(Prompt:="Enter the subject:")
'AppTime = InputBox(Prompt:="Enter the time:")

MailDbName = "mail\User.nsf"

strSTime = CStr(Timex)

Set CalenDoc = WorkSpace.COMPOSEDOCUMENT("MailServer", MailDbName, "Appointment")
CalenDoc.FIELDSETTEXT "AppointmentType", "3"
CalenDoc.Refresh

CalenDoc.FIELDSETTEXT "StartDate", CStr(AppDate)
CalenDoc.FIELDSETTEXT "EndDate", CStr(AppDate)
CalenDoc.FIELDSETTEXT "StartTime", "12:00 PM"
CalenDoc.FIELDSETTEXT "EndTime", "12:00 PM"
CalenDoc.FIELDSETTEXT "Subject", "Test"

GetUser = Environ("UserName")
EmailAddress = GetUser & "@company.com"

If EmailAddress = "User1@company.com" Then
CalenDoc.FIELDSETTEXT "RequiredAttendees", "User2@company.com" & "," & "User3@company.com"
CalenDoc.Refresh
ElseIf EmailAddress = "User2@company.com" Then
CalenDoc.FIELDSETTEXT "RequiredAttendees", "User1@company.com" & "," & "User3@company.com"
CalenDoc.Refresh
ElseIf EmailAddress = "User3@company.com" Then
CalenDoc.FIELDSETTEXT "RequiredAttendees", "User2@company.com" & "," & "User1@company.com"
CalenDoc.Refresh
Else
MsgBox (EmailAddress & "is not a valid email address.")
End If


'CalenDoc.gotoField "Body"
'CalenDoc.InsertText Body
CalenDoc.Refresh
'CalenDoc.Save
'CalenDoc.Close
'Set CalenDoc = Nothing
'Set WorkSpace = Nothing

1 Ответ

2 голосов
/ 09 марта 2019

Я думаю, что вы были сбиты с толку, рассматривая примеры, которые используют внутренние COM-классы вместо или, возможно, в дополнение к примерам, которые используют внешние OLE-классы. Вы используете Notes.NOTESUIWORKSPACE - OLE вместо Lotus.NotesSession - COM. Это означает, что вы должны использовать фактические редактируемые поля в форме Встречи, которые иногда не соответствуют вашим ожиданиям. В некоторых случаях эти входные поля не совпадают с элементами, которые в конечном итоге будут храниться в внутреннем документе - и именно имена внутренних элементов, как правило, документируются, поскольку они хранятся в примечание.

RequiredAttendees - это имя сохраненного элемента, но вы получаете ошибку автоматизации, потому что это вычисляемое поле в форме назначения, а не редактируемое поле.

Поскольку вы используете OLE, вам необходимо ввести данные в поле «EnterSendTo». Данные, которые вы (или пользователь) помещаете туда, на самом деле оказываются в элементе RequiredAttendees благодаря волшебству, которое происходит в формулах и сценариях, связанных с формой Назначения.

...