Отправка строки вложений из таблицы Access - PullRequest
0 голосов
/ 08 марта 2020

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

Формы хранятся извне в папке (c:\...\medical form) и имеют название (DDMMYYYY Fname Lname). Данные этого имени файла (не strpath) хранятся в [med forms].

В родительской форме (courses) Я пытаюсь поместить кнопку, которая циклически перебирает [med forms] в подчиненной форме [courses customer subform], прикрепив их к электронному письму, которое затем отправляется мне.

У меня возникли проблемы с циклическим перемещением по форме и подключением strpath и strfile для прикрепления этих документов, а также с моим плохое знание кодирования сейчас просто смущает меня.

Надеюсь, один из вас, милые люди, сможет помочь!

Dim appOutLook As Outlook.Application
Dim MailOutLook As Outlook.MailItem
Dim strpath As String
Dim strfile As String
Dim varSubject As Variant
Dim varGroup As Variant
Dim varBody As Variant
Dim stratt As String
strpath = "C:\...\Medical forms"
varSubject = "Med forms " & (Me.[Title]) & (Me.[Start])
varBody = "email body TBC"
    With Me.[courses customer subform].Form.RecordsetClone
    If (.RecordCount) Then
        .MoveFirst
        Do Until .EOF
            If Len(![Med form]) Then
                stratt = stratt & strpath & ![Med form]
            End If
        .MoveNext
        Loop
        If Len(strEmail) Then

    Set appOutLook = CreateObject("Outlook.Application")
    Set MailOutLook = appOutLook.CreateItem(olMailItem)

    With MailOutLook
        .BodyFormat = olFormatRichText
        .To = "info@myemail.co.uk"

        .Subject = varSubject
        .HTMLBody = varBody
        .Attachments.Add (strpath & strfile)
        .Display
    End With
End sub

1 Ответ

1 голос
/ 08 марта 2020

Поскольку вы уже используете позднюю привязку (CreateObject("Outlook.Application")), я бы предложил использовать позднюю привязку для остальной части вашего Sub (избегая необходимости добавлять ссылку на библиотеку), и предложил бы что-то вроде следующего:

Sub EmailForms()
    Dim strPth As String: strPth = "C:\...\Medical forms\"
    Dim strSub As String: strSub = "Med forms " & Me.[Title] & Me.[Start]
    Dim strBdy As String: strBdy = "email body TBC"

    Dim rsRst As DAO.Recordset
    Set rsRst = Me.[courses customer subform].Form.RecordsetClone
    If Not rsRst.BOF And Not rsRst.EOF Then
        rsRst.MoveFirst

        Dim olApp As Object
        Set olApp = CreateObject("Outlook.Application")

        With olApp.CreateItem(0) 'olMailItem
            .BodyFormat = 3 'olFormatRichText
            .to = "info@myemail.co.uk"
            .Subject = strSub
            .HTMLBody = strBdy

            With .Attachments
                Do Until rsRst.EOF
                    If rsRst![Med form] <> vbNullString Then
                        .Add strPth & rsRst![Med form]
                    End If
                    rsRst.MoveNext
                Loop
            End With

            .Display
        End With
    End If
    rsRst.Close
End Sub
...