#excel #vba #outlook
#excel #vba #outlook
Вопрос:
У меня есть некоторый код, работающий для импорта данных из Excel, когда ячейка содержит слово «Да». Я хотел бы включить код для игнорирования любых записей, которые ранее были импортированы, при повторном запуске кода.
Sub Permits()
Dim OL As Outlook.Application, Appoint As Outlook.AppointmentItem, ES As Worksheet, _
r As Long, i As Long, WB As ThisWorkbook
Set WB = ThisWorkbook
Set ES = WB.Sheets("Permits")
r = ES.Cells(Rows.Count, 1).End(xlUp).Row
Set OL = New Outlook.Application
For i = 2 To r
If ES.Cells(i, 10) = "Yes" Then
Set Appoint = OL.CreateItem(olAppointmentItem)
With Appoint
.Subject = ES.Cells(i, 3).Value
.Start = ES.Cells(i, 7) ES.Cells(i, 8).Value
.ReminderSet = True
.ReminderMinutesBeforeStart = 60
.Body = "£" amp; ES.Cells(i, 6).Value
.Save
End With
End If
Next i
Set OL = Nothing
End Sub
Комментарии:
1. Используйте новый столбец для пометки при каждом добавлении элемента (т. Е., возможно, у столбца есть название ‘Added’ , а затем отметьте его
Yes
, как только вы назначите это назначение). Затем вы можете либо использовать фильтр для отображения толькоnon-added
элементов, либо проверить значение в этом столбце, чтобы решить, хотите ли вы добавить назначение
Ответ №1:
Вы можете пометить обработанные строки зеленым цветом, например: (отредактировано как req, оно ищет «Да» в ячейке 11)
Option Explicit
Option Compare Text 'ignore case sensitivity when comparing strings
Sub Permits()
Dim OL As Outlook.Application, ES As Worksheet, _
r As Long, i As Long, WB As ThisWorkbook
Set WB = ThisWorkbook
Set ES = WB.Sheets("Permits")
Set OL = New Outlook.Application
r = ES.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To r
With ES.Cells(i, 10)
If .Value = "Yes" And .Offset(0, 1).Value <> "Yes" Then
.Offset(0, 1).Value = "Yes"
With OL.CreateItem(olAppointmentItem)
.Subject = ES.Cells(i, 3).Value
.Start = ES.Cells(i, 7) ES.Cells(i, 8).Value
.ReminderSet = True
.ReminderMinutesBeforeStart = 60
.Body = "£" amp; ES.Cells(i, 6).Value
.Save
End With
End If
End With
Next i
Set OL = Nothing
Set WB = Nothing
Set ES = Nothing
End Sub
Вы также можете создать отдельный столбец, чтобы отмечать их и т.д., Редактировать по мере необходимости. В качестве альтернативы вы можете сохранить электронную таблицу «чистой» и выполнить поиск существующих напоминаний с теми же данными.
Комментарии:
1. Из-за условного форматирования, настроенного на рабочем листе, это было бы невозможно — как я мог бы настроить его таким образом, если (i, 10) = «Да» и (i, 11) = «Нет», тогда он импортируется? (предполагая, что 11 будет содержать «да» или «нет» для определения того, импортировано ли оно уже?
2. Прошу прощения, с этим разобрались — однако, есть ли способ автоматически помечать ячейки в 11 как «Да» при запуске VBA?
3. Без проблем, я отредактировал свой ответ, так что теперь он ищет «Да» в ячейке 11, и если он не найден, он установит задачу и введет «Да». Пожалуйста, отметьте этот ответ как правильный, если это помогло 🙂
4. Большое вам спасибо, работает отлично! Вы оказали огромную помощь для полного любителя работы с VBA