Udało mi się napisać kod do stworzenia zadania w Outlooku. Użyłem poniższego kodu w Private Sub OutlookTask_Click() zdefiniuj odbiorcę i również działał dobrze. Musiałem jednak dodać jakieś niestandardowe pole w moim formularzu zadań programu Outlook. Zmieniłem kod na ten, który jest wymieniony w Private Sub test1_Click(). Działa dobrze, przypisując sobie zadanie za pomocą .save. Kiedy przypisuję komuś innemu, otrzymuję perspektywę błędu, która nie może znaleźć nazwy. Opublikowana odpowiedź działała dobrze, wystarczyło zmienić MyItem na OlTask.
Private Sub OutlookTask_Click()
Dim OlApp As Outlook.Application
Dim OlTask As Outlook.TaskItem
Dim OlTaskProp As Outlook.UserProperty
Dim OlLocation As Object
Dim OlDelegate As Outlook.Recipient
Dim TName As String
Set OlApp = CreateObject("Outlook.Application")
Set OlTask = OlApp.CreateItem(olTaskItem)
Set OlTaskProp = OlLocation.UserProperties.Find("Mlocation")
TName = Me.Alias
'Set OlDelegate = OlTask.Recipients.Add(TName)
With OLTask
.Subject = Me.Item
.StartDate = Me.Start_Date
.DueDate = Me.Due_Date
.Status = TStatus
.Importance = TPriority
.ReminderSet = True
.ReminderTime = Me.Due_Date - 3 & " 8:00AM"
.Body = Me.Description
.UserProperties("MLocation") = Me.Location
If Me.Alias = "Troy" Then
.Save
Else
.Assign
Dim myDelegate As Outlook.Recipient
Set myDelegate = OlTask.Recipients.Add(TName)
myDelegate.Resolve
End If
If myDelegate.Resolved Then
.Send
Else
MsgBox "Name not Found"
End If
MsgBox "Task Successful"
End Sub
Private Sub test1_Click()
Dim OlApp As Outlook.Application
Dim objFolder As MAPIFolder
Dim OLTask As Outlook.TaskItem
Dim OlItems As Outlook.Items
Dim OlDelegate As Outlook.Recipient
Dim TName As String
Dim TStatus As Integer
Dim TPriority As Integer
Set OlApp = CreateObject("Outlook.Application")
Set objFolder = OlApp.GetNamespace("MAPI").GetDefaultFolder(olFolderTasks)
Set OlItems = objFolder.Items
Set OLTask = OlItems.Add("IPM.Task.TroyTask")
TName = Me.Alias
Set OlDelegate = OLTask.Recipients.Add(TName)
With OLTask
.Subject = Me.Item
.StartDate = Me.Start_Date
.DueDate = Me.Due_Date
.Status = TStatus
.Importance = TPriority
.ReminderSet = True
.ReminderTime = Me.Due_Date - 3 & " 8:00AM"
.Body = Me.Description
.UserProperties("MLocation") = Me.Location
If Me.Alias = "Troy" Then
.Save
Else
.Assign
.Send
End If
End With
MsgBox "Task Successful"
End Sub
1 odpowiedź
Wygląda na to, że przesyłasz delegowane zadanie bez odpowiedniego przygotowania jego wewnętrznych struktur, ponieważ po Assign()
bezpośrednio następuje Send()
:
If Me.Alias = "Troy" Then
.Save
Else
.Assign
.Send ' problem
End If
W takim przypadku adresaci muszą zostać rozwiązani. Zobacz rozwiązywanie nazwy delegowanego zadania widocznej w działającym . Przyjąłem go bez testowania tutaj:
If Me.Alias = "Troy" Then
.Save
Else
.Assign
Dim myDelegate As Outlook.Recipient 'added
Set myDelegate = OlTask.Recipients.Add(TName) 'added
myDelegate.Resolve 'added
If myDelegate.Resolved Then 'added
.Send
Else 'added
'report error here 'added
End If 'added
End If
Wywołanie Resolve()
może znajdować się wcześniej w kodzie, to tylko ilustracja zaczerpnięta z przykładu.
Podobne pytania
Nowe pytania
ms-access
Microsoft Access, znany również jako Microsoft Office Access, to narzędzie do tworzenia aplikacji i baz danych firmy Microsoft. Łączy silnik bazy danych Microsoft Jet / ACE z graficznym interfejsem użytkownika i narzędziami do tworzenia oprogramowania. Inne silniki baz danych, takie jak SQL Server, mogą być również używane jako serwer bazy danych dla aplikacji Access.