Как сделать итеративный отправитель электронной почты Outlook с перерывами между запросами пользователя - PullRequest
0 голосов
/ 13 июня 2019

В настоящее время у меня есть код VBA, который перебирает электронные письма в файле Excel и заполняет тела писем Outlook по различным критериям, которые относятся к получателям писем. После каждого автоматического создания / черновика электронного сообщения я хочу не отправлять электронное письмо, а подождать с открытым черновиком, чтобы пользователь вручную проверил, все ли правильно, попросил его отправить электронное письмо, а затем продолжить программу, составив следующее электронное письмо и предложив пользователю проверить его перед отправкой. По сути, мне интересно, можете ли вы иметь цикл while внутри цикла for, в котором цикл for повторяется до тех пор, пока не будут отправлены все электронные письма, но внутри него есть цикл while, который получает свои критерии из Outlook, в основном говоря «отправил ли пользователь письмо «Да? Хорошо, теперь набросок следующего». Это возможно? Если нет, есть ли способ обойти это или у вас есть другие предложения? Если так, что вы предлагаете мне сделать?

Я не пытался решить эту проблему, потому что я немного новичок в VBA и не смог найти никаких руководящих ресурсов в Интернете. Я не знал, с чего начать.

На самом деле у меня пока нет кода, чтобы согласиться с ним. Этот вопрос был больше для направленной помощи.

1 Ответ

0 голосов
/ 13 июня 2019

То, что вы хотите сделать, было бы сложно спроектировать с помощью VBA, но не невозможно.Я бы порекомендовал надстройку COM.Несмотря на это, в Outlook нет концепции цикла ожидания, которая бы работала в вашу пользу.Вам нужно будет поддерживать коллекцию окон Inspector, которую вы добавляете или удаляете на основе событий Inspectors.NewInspector и Inspector.Close (это известно разработчикам Outlook как «модель оболочки»).Из этих объектов Inspector вы можете получить объект MailItem из Inspector.CurrentItem, а оттуда вы можете перехватить событие MailItem.Send, которое вы можете отменить на основании обзора пользователя или установить некоторые внутренние переменные, которые вы можете отслеживать для управления этими событиями отправки.вы отслеживаете.

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

Для получения общей справки по VBA см. Документацию Объектная модель Outlook или OutlookCode.com (старая, но все еще актуальная).

...