Мне жаль, что мой комментарий был таким кратким; 500 символов не оставляют много места для полного ответа.
Ваш вопрос очень неясен, поэтому, скорее всего, он будет закрыт. Конечно, я не вижу, как кто-то мог ответить на это. Вот почему важно, чтобы вы попытались решить собственную проблему и при необходимости вернулись с конкретными вопросами.
Ниже я приведу ссылки на последние сообщения, которые, как я считаю, помогут вам начать работу. Как я уже сказал в своем комментарии, просмотрите последние сообщения. Используйте средство поиска. Здесь вы найдете несколько очень хороших ответов, если вы их найдете.
Первые два сообщения написаны мной. Первые шаги одинаковы, но, поскольку вопросы были не совсем одинаковыми, более поздние шаги отличаются. Посмотрите на оба и выберите нужные вам биты. Все остальные сообщения содержат информацию, которая может оказаться вам полезной.
Как импортировать данные почты Outlook в Excel
обновление таблицы Excel на основе почты Outlook
Может ли кто-нибудь помочь мне в создании макроса Outlook, который выполняет следующее
отправить электронное письмо из Excel 2007 vba, используя переменные набора шаблонов outlook
использование Visual Basic для доступа к подпапке в папке входящих
электронная почта VBA Outlook, перемещаемая
Новый раздел в ответ на новую информацию от спрашивающего
За исключением незначительных изменений, код в вашем вопросе был взят из файла справки Microsoft для NewMailEx Event
. Этот код будет работать только в том случае, если вы установили правильный тип установки и разместили его в правильном месте:
- " Событие NewMailEx будет срабатывать только для почтовых ящиков в Microsoft Outlook, которые предоставляют уведомления для полученных сообщений, таких как Microsoft Exchange Server. Кроме того, это событие будет срабатывать только в том случае, если Outlook работает. Другими словами, он не будет запускаться для новых элементов, полученных в Входящие , когда Outlook не был открыт. Разработчикам, которые хотят получить доступ к этим элементам для клиентов, использующих Outlook на учетной записи электронной почты сервера Exchange, необходимо реализовать их код на сервере. Однако событие NewMailEx будет запускаться в режиме кэширования Exchange во всех настройках: Загрузка полных элементов , Загрузка заголовков и Загрузите заголовки, а затем полные элементы ."
У вас есть правильный тип установки? Можете ли вы разместить свой код на сервере? Даже если это правильный подход к финальной версии вашего макроса, я не верю, что это правильный подход при изучении VBA и Outlook.
Вам нужны две вещи:
- подробная спецификация макроса, который вы хотите написать, и
- больше понимания VBA и Outlook.
Я сомневаюсь, что вы можете создать детальную спецификацию еще, потому что вы недостаточно знаете о VBA и Outlook. Но мы можем перечислить вещи, которые вам нужно знать:
- Как вы пишете в базу данных из Outlook?
- Как определить почтовые отправления, которые вы хотите записать? В вашем примере вы проверяете предмет «Привет» и отвечаете «Привет». Это хорошо для первого эксперимента, но вам нужно определить реальный метод. Это новый отправитель? Есть ли конкретная информация в теле сообщения? Должен ли человек идентифицировать такие почтовые отправления?
- В вашем примере у вас есть папка "Личные" в разделе "Входящие".Многие люди, похоже, имеют такой тип структуры папок, и примеры Microsoft, как правило, используют подобные папки.Я не буду.У меня есть папка с именем "! Home".Под этим у меня есть папки для «Страхование», «Покупки», «Деньги».Под ними у меня есть папки для разных поставщиков.Разобравшись с сообщением, я перемещаю его в соответствующую папку.Ответы отправляются в ту же папку.Это моя система, и она работает для меня.Какой будет ваша система?Например, будет ли одна папка для всех клиентов или по одной на каждого клиента?
Выше приведен начальный список вопросов для вашей спецификации, но также и начальный список того, что вам нужнознать.
Возможно, у вас есть начальник, который хочет, чтобы вы прекратили тратить время и начали писать макрос, но вы еще недостаточно знаете, чтобы планировать окончательный макрос.
Начните с моих уроков.Первые три шага о структуре папок.Эти шаги необходимы, если у вас есть сложные структуры папок, которые у меня есть.Далее я просматриваю папку, отображающую выбранную информацию от каждого почтового элемента.У меня есть шаги, в которых я пишу тела сообщения на диск.Я предлагаю вам пройти оба урока и попробовать мой код.Не все это будет полезно сразу, но это хорошая справочная информация.
Какая у вас база данных?Это Access или Excel?В моих руководствах и других ссылках, приведенных выше, есть некоторая помощь по написанию в Excel, которую вы можете адаптировать для Access.
Я думаю, что на данный момент этого достаточно.Возьми это медленно, и это начнет иметь смысл.Я до сих пор помню первый раз, когда я пытался написать макрос Outlook, чтобы понять вашу путаницу.Я обещаю, что это станет ясно.Удачи.
Новый раздел в ответ на следующий комментарий:
- "Привет, я попробовал .. Получил то, что я хочу .... Удаленомой предыдущий код .. и попытался заменить новый код .. Теперь вам нужна небольшая помощь .... есть ли способ использовать тот же формат, как когда мы нажимаем кнопку answerall в outlook .. мой код работает нормально ..формат письма отличается .. "
Задача 1
.Body = .Body & Chr(13) & Chr(13)
Вы используете текстовое тело.Я думаю, что вы хотите тело HTML.Попробуйте:
.HTMLBody = .HTMLBody & Chr(13) & Chr(13)
Задача 2
Таким способом вы не можете добавить текст HTML.Тело HTML будет следующим:
<!doctype ...><html><head> ... </head><body> ... </body></html>
Вы должны добавить свой текст в начало тела;то есть сразу после <body>
.Если вы просто добавите свой текст, вы примете любой стиль, поля и цвета, которые использовал отправитель.Следующий код добавляет текст, который выглядит одинаково в каждом письме, с которым я его пробовал.Мой текст находится в таблице с одной ячейкой.Таблица покрывает всю ширину страницы.Текст синий на белом фоне.
Dim InsertStg As String
Dim Inx As Long
Dim Pos As Long
'Change the body step 1: Create the string to be inserted
InsertStg = "<table border=0 width=""100%"" style=""Color: #0000FF""" & _
" bgColor=#FFFFFF><tr><td><p>"
For Inx = 1 To 10
InsertStg = InsertStg & "Sentence " & Inx & " of first paragraph. "
Next
InsertStg = InsertStg & "</p><p>"
For Inx = 1 To 10
InsertStg = InsertStg & "Sentence " & Inx & " of second paragraph. "
Next
' The following adds a signature at the bottom of the message.
' "font-family" gives a list of fonts to be tried. If these are
' missing from your computer, use the names of fonts you do have.
' "serif" means that if none of the fonts exist any serif font
' that exists is to be used.
InsertStg = InsertStg & "</p><p style = ""font-family: Mistral, " & _
"Vivaldi, serif; font-size: 14px; color: " & _
"rgb(127,0,127)"">John Smith<br>5 Acacia Avenue<br>"
InsertStg = InsertStg & "</p></td></tr></table>"
'Change the body step 2: Find insertion position just after <Body> element
Pos = InStr(1, LCase(.HTMLBody), "<body")
If Pos = 0 Then
Call MsgBox("<Body> element not found in HTML body", vbCritical)
Exit Sub
End If
Pos = InStr(Pos, .HTMLBody, ">")
If Pos = 0 Then
Call MsgBox("Terminating > for <Body> element not found in HTML body", vbCritical)
Exit Sub
End If
'Change the body step 3: Insert my text into body
.HTMLBody = Mid(.HTMLBody, 1, Pos) & InsertStg & Mid(.HTMLBody, Pos + 1)