2016-01-07 4 views
0

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

Месторождения стола являются:

  • ID (авто номер)
  • Веб-адрес интернет-файл (гиперссылки)
  • Ключ (то, что пользователь вводит в для запроса параметров что затем отправляет соответствующие данные к ресурсам (текстовая строка)
  • описание рабочего листа (памятка)

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

  • Ключ листа (текстовая строка)
  • Сколько листов должны быть напечатаны (номер)
  • Любые ноты (памятка) Тогда они нажмите «ОК», и письмо будет отправлено.

Электронная почта должна содержать эту информацию, которая соответствует данным, введенным в запросе:

  • гиперссылка на лист
  • Сколько листов пользователь сказал необходимость печататься
  • Примечания, отправленные пользователем и примечания, уже приведенные в таблице

Чтобы загрузить мою базу данных до сих пор, click here.

Я хотел был бы сделать это в коде VBA. Не могли бы вы провести меня по правильной линии, чтобы сделать эту работу? Любые предложения кода были бы полезны, поскольку я новичок в VBA.

+0

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

+0

@HansUp я могу получить запрос на работу, я просто не знаю, если как я это делаю правильно для этого проекта –

ответ

0

Сначала добавьте в библиотеку «Библиотеку объектов Microsoft Outlook 14.0» (у вас может быть другое число, чем 14.0), щелкнув «Инструменты», затем «Ссылки». У меня есть следующий код, который немного больше, чем вы просите, но он будет работать. Аргумент signature - это текстовое тело как строка. При создании строки используйте «vbCrLf» для создания новых строк, например. signature = "Привет, как дела?" + vbCrLf + «Я в порядке». будет помещать предложения на две отдельные строки.

Private Sub createEmail(ByVal toEmailAddresses As String, _ 
        ByVal ccEmailAddresses As String, _ 
        ByVal att1 As String, _ 
        ByVal att2 As String, _ 
        ByVal signature As String, _ 
        ByVal subject As String, _ 
        ByVal displayIt As Boolean) 
    On Error GoTo foundError 
    Dim outItem As Outlook.MailItem 
    Set outItem = Outlook.CreateItem(olMailItem) 

    outItem.BodyFormat = olFormatHTML 
    outItem.Recipients.Add toEmailAddresses 
    outItem.cc = ccEmailAddresses 
    outItem.subject = subject 
    If att1 <> "" Then 
     outItem.Attachments.Add (att1) 
    End If 
    If att2 <> "" Then 
     outItem.Attachments.Add (att2) 
    End If 

    outItem.HTMLBody = signature 

    outItem.Send 
    'Note: if you wanted to create the email and check it first, use outItem.Save 
    Exit Sub 
foundError: 
    MsgBox "Error in createEmail: " + CStr(Err) + ", " + Error(Err), vbOKOnly, "ERROR" 
End Sub 
+0

Должен ли я редактировать мой запрос/таблицу/формы базы данных для этого? –

+0

Нет. Вы должны иметь возможность скопировать его в свой модуль (возможно, вам нужно сделать его общедоступным) и просто передать аргументы. О, вы можете удалить аргумент «displayIt», в моей версии я могу выбрать отображение сообщения. Но вам нужно добавить ссылку на библиотеку объектов MS Outlook. – PKatona

Смежные вопросы