Макрос предназначен для сохранения в реестре (и изменения через форму) настроек почтового аккаунта.
Эти настройки используются макросом рассылки почты Send_Mail
(для отправки почты из Excel без применения специализированных почтовых программ)
При запуске формы, она считывает из реестра Windows ранее сохранённые настройки.
Данный подход позволяет избежать хранения конфиденциальных данных в коде программы, что важно, если вы передаёте файл с программой рассылки почты другим людям.
При использовании этой формы ввода, каждый пользователь сможет самостоятельно задать макросу свои настройки своей учётной записи
После редактирования логина, пароля или адреса SMTP-сервера,
нажмите кнопку «Сохранить и проверить», чтобы сохранить в реестре изменённые данные.
После сохранения настроек, макрос попытается отправить тестовое письмо, используя сохранённые настройки.
(для этого, помимо формы, в книге Excel в стандартном модуде должен присутствовать макрос Send_Mail)
Если введённые настройки корректны, на компьютере есть доступ к интернету, и в системе установлена библиотека CDO for Windows,
будет выведено сообщение об успешной отправке тестового письма.
Данную форму можно использовать и для сохранения в реестре любых других настроек макроса.
Код сохранения настроек, и отправки тестового письма (на случайно выбранный адрес):
Private Sub CommandButton_CheckAndSave_Click() On Error Resume Next: Dim res As Boolean ' сохранение изменений SaveSetting Application.Name, "mail", "smtpserver", Trim(Me.smtpserver) ' Ваш SMTPServer SaveSetting Application.Name, "mail", "sendusername", Trim(Me.sendusername) ' Ваша учетная запись SaveSetting Application.Name, "mail", "sendpassword", Trim(Me.sendpassword) ' Ваш пароль ' пробуем отправить тестовое пиьмо, использую функцию Send_Mail res = Run("Send_Mail", "test@mail.ru", Trim(Me.sendusername), "test", "test") If Err.Number = 1004 Then MsgBox "Проверить настройки почты не удалось", _ vbExclamation, "Макрос «Send_Mail» не найден": Exit Sub ' если макрос не найден If res Then ' если отправка прошла успешно MsgBox "Настройки почтового аккаунта проверены - почта успешно отправляется", vbInformation, "Всё ОК" Else MsgBox "Настройки почтового аккаунта неверны, SMTP сервер недоступен, " & vbNewLine & _ "или отправка почты не поддерживается вашей операционной системой", vbExclamation, "Что-то не так..." End If End Sub
Комментарии
Встроенная в Excel функция делает то же самое (сохраняет временный файл, и его уже отправляет)
Только это действие незаметно для пользователя
да, так работает ;). Спасибо.
А как же Ехсе1 из своего меню отправляет открытые файлы?, может там какая-то заковырка есть?
А не получится у вас таким способом отправить книгу Excel.
Если вы используете ActiveWorkbook.Name, это значит, что файл открыт в Excel, а открытые файлы Windows блокирует.
Отправлять надо файл, не открытый в какой-либо программе.
В случае с книгой Excel, надо создать предварительно копию открытой книги (например, методом ActiveWorkbook.SaveCopyAs "ПолныйПутьКФайлу"),
и потом в качестве параметра MailAttachment задавать путь к этой копии файла "ПолныйПутьКФайлу")
а в примере есть проверка учетной записи Function Send_Mail и параметр MailAttachment As String, так вот, когда его указываешь (например : ActiveWorkbook.Name или FullName), письмо не отправляется. Ошибка -2146697203.
В какое ещё сообщение?
В статье описано, как сохранить учетную запись почты в реестре Windows
Тут ни слова про какие-то вложения (attachment)...
аттачмент в сообщение не цепляется :(
выдает ошибку
Отправить комментарий