For ctr = startRow To endRow With CreateObject("Outlook.application").createitem(1) On Error Resume Next .Start = DateValue(Range("C" & ctr)) + TimeValue(Range("C" & ctr)) .Duration = CLng(Range("D" & ctr)) ' 30 .Subject = CStr(Range("E" & ctr)) ' subject text .ReminderSet = True .Save End With Next End Sub
[/vba]
Также имеется таблица на листе TaskBook. Нужно, чтобы Reminder создавался по заполнению этой таблицы
Вводится Header , Задача, Дата начала и Дата напоминания со времени. Т.е Reminder создается, но нужно, чтобы он создавался на определенную почту, которую мы введем в ячейку.
Помогите преобразить под эту таблицу.
Всем доброго времени суток!
На просторах интернета нашел следующий код, который создает напоминания в Outlook:
[vba]
Код
Sub Outloook_Reminders() Sheets("renewals").Select Dim startRow As Long, endRow As Long, ctr As Long
For ctr = startRow To endRow With CreateObject("Outlook.application").createitem(1) On Error Resume Next .Start = DateValue(Range("C" & ctr)) + TimeValue(Range("C" & ctr)) .Duration = CLng(Range("D" & ctr)) ' 30 .Subject = CStr(Range("E" & ctr)) ' subject text .ReminderSet = True .Save End With Next End Sub
[/vba]
Также имеется таблица на листе TaskBook. Нужно, чтобы Reminder создавался по заполнению этой таблицы
Вводится Header , Задача, Дата начала и Дата напоминания со времени. Т.е Reminder создается, но нужно, чтобы он создавался на определенную почту, которую мы введем в ячейку.
Все хорошо создает , но теперь нужно привязать напоминания к определенной почте в колонке С и желательно, чтобы она через ; записывалась. Например 1@mail.ru; 2@mail.ru и тд.
Небольшой апдейт в файле:
Все хорошо создает , но теперь нужно привязать напоминания к определенной почте в колонке С и желательно, чтобы она через ; записывалась. Например 1@mail.ru; 2@mail.ru и тд.Oh_Nick
For ctr = startRow To endRow With CreateObject("Outlook.application").createitem(1) On Error Resume Next .Start = DateValue(Range("C" & ctr)) + TimeValue(Range("C" & ctr)) .Duration = CLng(Range("D" & ctr)) ' 60 .Subject = CStr(Range("A" & ctr)) ' subject text .ReminderSet = True .Save End With Next End Sub
[/vba]
Вообщем остановился на таком коде и файле. В итоге необходимо добавить получателей и все (колонка B )
[vba]
Код
Sub Outloook_Reminders() Sheets("ReminderBook").Select Dim startRow As Long, endRow As Long, ctr As Long
For ctr = startRow To endRow With CreateObject("Outlook.application").createitem(1) On Error Resume Next .Start = DateValue(Range("C" & ctr)) + TimeValue(Range("C" & ctr)) .Duration = CLng(Range("D" & ctr)) ' 60 .Subject = CStr(Range("A" & ctr)) ' subject text .ReminderSet = True .Save End With Next End Sub
В этом коде есть рассылка по почтам. Как ее вписать в этот код?
[vba]
Код
Option Explicit Option Base 0
Sub OutTask_Manager()
Dim OutApp As Object 'Для обращений к приложению Outlook Dim OutTsk As Object 'Для создания задачи в Outlook Dim OutMan As Object 'Для работы с получателем задачи Dim shtX As Worksheet 'Для обращения к конкретному листу Dim RecR() As String 'Для хранения имён получателей Dim i As Long 'Для перебора получателей Dim X As Long 'Для перебора создаваемых задач
Set shtX = ThisWorkbook.Worksheets("TaskBook") Set OutApp = CreateObject("Outlook.Application") X = 2
Do While shtX.Cells(X, 1).Value <> 0 Set OutTsk = OutApp.CreateItem(3) ReDim RecR(0) RecR = Split(shtX.Cells(X, 3).Value, "; ") 'Если в столбце "Получатель" кто-то указан, то добавляем его. If UBound(RecR) >= 0 Then For i = 0 To UBound(RecR) If RecR(i) <> "" Then OutTsk.assign Set OutMan = OutTsk.Recipients.Add(RecR(i)) OutMan.Resolve If Not OutMan.Resolved Then MsgBox ("Не удаётся назначить задачу пользователю: " & RecR(i) & vbNewLine & "По закрытию этого окна программа продолжит перебор получателей и строк.") GoTo NextRow End If End If Next i End If 'Заполняем задачу содержанием. With OutTsk .Subject = shtX.Cells(X, 1).Value 'Заголовок задачи .Body = shtX.Cells(X, 2).Value 'Текст задачи .ReminderSet = True 'Включить напоминание Select Case shtX.Cells(X, 4).Value 'Выбираем важность Case "Низкая": .Importance = 0 Case "Обычная": .Importance = 1 Case "Высокая": .Importance = 2 End Select .StartDate = DateAdd("h", 10, shtX.Cells(X, 5).Value) 'Когда начать задачу .DueDate = DateAdd("h", 10, shtX.Cells(X, 6).Value) 'Дата завершения .ReminderTime = DateAdd("n", shtX.Cells(X, 8).Value * 60 + shtX.Cells(X, 9).Value, shtX.Cells(X, 7).Value) 'Дата напоминания 'В зависимости от содержания в столбце "Получатель" отправляем или сохраняем задачу. Select Case UBound(RecR) Case -1: .Save Case Else: .SEND End Select End With NextRow: X = X + 1 Set OutTsk = Nothing Set OutMan = Nothing Loop Set OutApp = Nothing End Sub
[/vba]
В этом коде есть рассылка по почтам. Как ее вписать в этот код?
[vba]
Код
Option Explicit Option Base 0
Sub OutTask_Manager()
Dim OutApp As Object 'Для обращений к приложению Outlook Dim OutTsk As Object 'Для создания задачи в Outlook Dim OutMan As Object 'Для работы с получателем задачи Dim shtX As Worksheet 'Для обращения к конкретному листу Dim RecR() As String 'Для хранения имён получателей Dim i As Long 'Для перебора получателей Dim X As Long 'Для перебора создаваемых задач
Set shtX = ThisWorkbook.Worksheets("TaskBook") Set OutApp = CreateObject("Outlook.Application") X = 2
Do While shtX.Cells(X, 1).Value <> 0 Set OutTsk = OutApp.CreateItem(3) ReDim RecR(0) RecR = Split(shtX.Cells(X, 3).Value, "; ") 'Если в столбце "Получатель" кто-то указан, то добавляем его. If UBound(RecR) >= 0 Then For i = 0 To UBound(RecR) If RecR(i) <> "" Then OutTsk.assign Set OutMan = OutTsk.Recipients.Add(RecR(i)) OutMan.Resolve If Not OutMan.Resolved Then MsgBox ("Не удаётся назначить задачу пользователю: " & RecR(i) & vbNewLine & "По закрытию этого окна программа продолжит перебор получателей и строк.") GoTo NextRow End If End If Next i End If 'Заполняем задачу содержанием. With OutTsk .Subject = shtX.Cells(X, 1).Value 'Заголовок задачи .Body = shtX.Cells(X, 2).Value 'Текст задачи .ReminderSet = True 'Включить напоминание Select Case shtX.Cells(X, 4).Value 'Выбираем важность Case "Низкая": .Importance = 0 Case "Обычная": .Importance = 1 Case "Высокая": .Importance = 2 End Select .StartDate = DateAdd("h", 10, shtX.Cells(X, 5).Value) 'Когда начать задачу .DueDate = DateAdd("h", 10, shtX.Cells(X, 6).Value) 'Дата завершения .ReminderTime = DateAdd("n", shtX.Cells(X, 8).Value * 60 + shtX.Cells(X, 9).Value, shtX.Cells(X, 7).Value) 'Дата напоминания 'В зависимости от содержания в столбце "Получатель" отправляем или сохраняем задачу. Select Case UBound(RecR) Case -1: .Save Case Else: .SEND End Select End With NextRow: X = X + 1 Set OutTsk = Nothing Set OutMan = Nothing Loop Set OutApp = Nothing End Sub