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

StackOverflow https://stackoverflow.com/questions/8816082

Вопрос

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

Опция явная

Public Sub Replytoall ()

Dim oexp как outlook.explorer

'Для выбранных почты в Outlook

Dim osm как mailitem

Dim onm как 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

Ошибка:

MsgBox Err.Description, vbCritical

Конец суб

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

Раздел 3

Sub ReplyAll () Dim objoutLookObject как mailItem

Для каждого objoutlookobject в getCurrentOutlookItems

With objOutlookObject
.ReplyAll.Display

'Код области Пробки не включает в себя шаблон, сохраненный в местоположении C .. бросает некоторую ошибку

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

Конец следующим конечным подбором

Функция getCurrentOutlookItems () как коллекция Dim objApp как Outlook.Application Dim objitem как объект 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

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

..........

Это было полезно?

Решение

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

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

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

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

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

Обновить лист Excel на основе Outlook Mail

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

Отправить электронное письмо из Excel 2007 VBA с использованием переменных шаблонов Outlook

Использование Visual Basic для доступа к подпапке в почтовых ящиках

vba Outlook Event Event Moving Email

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • «Здравствуйте, я попробовал .. то, что я хочу .... удалил мой предыдущий код .. и попытался заменить новый код. Теперь от вас требуется небольшая помощь .... есть ли способ использовать тот же формат, что и когда мы Нажмите кнопку «Ответить» в 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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top