Как отправить одно и то же сообщение ответа (шаблон, сохраненный в Outlook) почтовому отправителю (to, cc)

То, что мне нужно, это... я получаю письма от клиентов (разных клиентов), чтобы обновлять их данные о ресурсах в базе данных.. как только процесс завершен. Я должен ответить (в том числе cc) со своей почты, рассказывая, как "данные о активах, успешно сохраненные в База данных "(я использую шаблон)... Предложите мне, как это сделать, используя VBA..?

Вариант Явный

Открытый Sub ReplyToAll()

Dim oExp Как Outlook.Explorer

'для выбранных писем в Outlook

Dim oSM Как mailItem

Dim oNM As mailItem

On Error GoTo Err

Set oExp = Outlook.Application.ActiveExplorer

'Check if something is selected
If oExp.Selection.Count > 0 Then

    'Get the first item selected

    Set oSM = ActiveExplorer.Selection.Item(1)

        'Create a Reply template

        Set oNM = oSM.ReplyAll

        With oNM

            'Change the subject
            .Subject = "RE: " & oSM.Subject

            'Change the body
            .Body = .Body & Chr(13) & Chr(13)

        'Display the new mail before sending it
            .Display

        End With

End If

Exit Sub

Err:

MsgBox Err.Description, vbCritical

End Sub

.......................

раздел 3

Sub ReplyAll() Dim objOutlookObject As mailItem

Для каждого объекта objOutlookObject In GetCurrentOutlookItems

With objOutlookObject
.ReplyAll.Display

'код зоны интереса не включает шаблон, сохраненный в месте c. вызывает некоторую ошибку

.createitemtemplate("c:\car.jtm")

Завершить со следующим концом Sub

Функция GetCurrentOutlookItems() As Collection Dim objApp As Outlook.Application Dim objItem As Object Dim colItems как новая коллекция

Set objApp = CreateObject("Outlook.Application")
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
    Case "Explorer"
        For Each objItem In objApp.ActiveExplorer.Selection
            colItems.Add objItem
        Next
    Case "Inspector"
        colItems.Add objApp.ActiveInspector.CurrentItem
    Case Else
        ' anything else will result in an error, which is
        ' why we have the error handler above
End Select

Set objApp = Nothing
Set GetCurrentOutlookItems = colItems

Конечная функция

..........

0
источник поделиться
1 ответ

Мне жаль, что мой комментарий был таким резким; 500 символов не оставляют много места для полного ответа.

Ваш вопрос очень неясен, поэтому он, вероятно, будет закрыт. Конечно, я не понимаю, как кто-то может ответить на него. Вот почему важно, чтобы вы попытались решить свою собственную проблему и, при необходимости, вернуться к конкретным вопросам.

Ниже я предоставляю ссылки на последние сообщения, которые, я считаю, помогут вам начать работу. Как я сказал в своем комментарии, просмотрите последние сообщения. Используйте средство поиска. Здесь есть очень хорошие ответы, если вы их ищете.

Первые два сообщения - это учебники, написанные мной. Ранние шаги одинаковы, но, поскольку вопросы были не совсем одинаковыми, последующие шаги разные. Посмотрите на оба и выберите нужные вам биты. Другие сообщения содержат информацию, которая может оказаться полезной.

Как импортировать данные почты Outlook в Excel

обновить листы excel на основе почты Outlook

может ли кто-нибудь помочь мне создать макрос перспективы, который делает следующее

отправьте электронное письмо от excel 2007 vba с помощью переменных шаблона внешнего вида

использование визуальной базы для доступа к подпапке в папке "Входящие"

перемещение электронной почты vba

Новый раздел в ответ на новую информацию от опроса

За исключением незначительных изменений, код в вашем вопросе был взят из файла справки Microsoft для NewMailEx Event. Этот код будет работать, только если у вас есть правильный тип установки и если вы поместите его в нужное место:

  • "Событие NewMailEx будет запускаться только для почтовых ящиков в Microsoft Outlook, которые предоставляют уведомление для принятого сообщения, такого как Microsoft Exchange Server. Кроме того, событие будет срабатывать только в том случае, если Outlook запущен. Другими словами, он не срабатывает для новых элементов, которые полученных в папке " Входящие", когда Outlook не был открыт. Разработчики, которые хотят получить доступ к этим элементам для клиентов, запускающих Outlook на учетной записи электронной почты сервера Exchange, должны реализовать свой код на сервере. Однако событие NewMailEx будет срабатывать в режиме кэширования Exchange все настройки: Загрузите полные записи, загрузите заголовки и загрузите заголовки, а затем "Полные элементы ".

У вас есть правильный тип установки? Можете ли вы разместить свой код на сервере? Даже если это правильный подход к окончательной версии вашего макроса, я не верю, что это правильный подход, когда вы изучаете VBA и Outlook.

Вам нужны две вещи:

  1. подробное описание макроса, который вы хотите написать, и
  2. больше понимания VBA и Outlook.

Я сомневаюсь, что вы можете создать подробную спецификацию, потому что вы не знаете достаточно о VBA и Outlook. Но мы можем перечислить то, что вам нужно знать:

  • Как вы пишете в своей базе данных из Outlook?
  • Как вы идентифицируете почтовые отправления, которые хотите записать? В вашем примере вы проверяете тему "Привет" и отвечаете "Привет". Это хорошо для первого эксперимента, но вам нужно определить реальный метод. Это новый отправитель? Есть ли конкретная информация в теле сообщения? Должен ли человек идентифицировать такие почтовые отправления?
  • В вашем примере у вас есть папка "Личные" в разделе "Входящие". У многих людей такой тип структуры папок, и в примерах Microsoft обычно используются такие папки. Я не. У меня есть папка под названием "! Home". При этом у меня есть папки для "Страхование", "Покупки", "Деньги". Под ними у меня есть папки для разных поставщиков. Как только я обработаю сообщение, переместите его в соответствующую папку. Ответы идут в одну папку. Это моя система, и это работает для меня. Какова будет ваша система? Будет ли, например, одна папка для всех клиентов или одна на одного клиента?

Вышеприведенный список вопросов для вашей спецификации, но также является стартовым списком вещей, которые вам нужно знать.

Возможно, у вас есть босс, который хочет, чтобы вы прекратили тратить время и начали писать макрос, но пока не знаете достаточно, чтобы запланировать окончательный макрос.

Начните с моих уроков. Первые три этапа касаются структуры папок. Эти шаги необходимы, если у вас есть сложные структуры папок, которые у меня есть. Затем я просматриваю папку, отображающую выбранную информацию из каждого почтового элемента. У меня есть шаги, в которых я пишу тела сообщений на диск. Я предлагаю вам пройти оба учебника и попробовать свой код. Не все это будет немедленно полезно, но все это хорошая справочная информация.

Какая у вас база данных? Доступен ли он или Excel? В моих учебных пособиях и в других ссылках приведена некоторая помощь с записью в Excel, которую вы можете адаптировать для доступа.

Я думаю, что на сегодня этого достаточно. Возьмите его медленно, и это начнет иметь смысл. Я все еще помню, как в первый раз, когда я пытался написать макрос Outlook, я понимаю вашу путаницу. Я обещаю, что это станет ясно. Удачи.

Новый раздел в ответ на следующий комментарий:

  • "Привет, я пробовал.. Получил то, что хочу.... Удалил мой предыдущий код... и попытался заменить новый код.. Теперь вам мало нужна помощь.... есть ли способ использовать тот же формат, что и когда мы нажмите кнопку replyall в Outlook. Мой код работает отлично..prob формат почты отличается.. "

Проблема 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)
+1
источник

Связанные вопросы


Похожие вопросы

Посмотрите другие вопросы по меткам или Задайте вопрос