Файл существует с помощью проверки Dir (), но не прикрепляется к почтовому макросу - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть макрос, который может отправлять несколько писем с вложениями определенному пользователю, с этим не было проблем, когда я отправлял 1 файл 1 пользователю, но я изменил его, чтобы он зацикливался на отправке одного письма с несколькими вложениями (так чтоЗаполняет почтовый ящик получателей).Теперь проблема в том, что он вообще не прикрепляет файл.

Сначала я прошу пользователя указать папку, в которой хранятся файлы, чтобы я получил cadenaDirectorio (путь), затем он перебирает электронные письма пользователей.чтобы получить адрес, я ищу каждый файл, который еще не был отправлен, и наконец проверяю его с помощью функции Dir(), если файл существует или нет, который правильно возвращает истину или ложь, но он ничего не прикрепляет никогда.

For Each llave In dictMov.Keys

    Set objMail = outlookApp.CreateItem(olMailItem) 'MAIL OBJECT


    'GET EMAIL
    For filaIndiceFuenteM = 2 To filaFuenteUltimaM
        If llave = planillaFuenteM.Cells(filaIndiceFuenteM, "K") Then
            mailJefe = planillaFuenteM.Cells(filaIndiceFuenteM, "M")
        End If
    Next filaIndiceFuenteM

    For filaIndiceFuente = 437 To filaFuenteUltima

        Set objMail = outlookApp.CreateItem(olMailItem) 'MAIL CREATION

        'GET MAIL
        For filaIndiceFuenteM = 2 To filaFuenteUltimaM
            If llave = planillaFuenteM.Cells(filaIndiceFuenteM, "K") Then
                mailJefe = planillaFuenteM.Cells(filaIndiceFuenteM, "M")
            End If
        Next filaIndiceFuenteM

        'GET DOCS TO SEND

            If llave = planillaFuente.Cells(filaIndiceFuente, "L") And planillaFuente.Cells(filaIndiceFuente, "AA") = "SIN DESP" Then
                'LOOK FOR THE FILES
                archivoFuente = Dir
                cadenaFuente = ""

                archivoFuente = Dir(cadenaDirectorio & planillaFuente.Cells(filaIndiceFuente, "C") & "*.pdf")
                cadenaFuente = cadenaDirectorio & archivoFuente
                If Dir(archivoFuente) = "" Then

                    noExistentes = noExistentes & vbNewLine & planillaFuente.Cells(filaIndiceFuente, "D")

                Else

                    objMail.Attachments.Add archivoFuente

                End If
            End If
    Next filaIndiceFuente

    If noExistentes <> "" Then MsgBox noExistentes

    objMail.To = mailJefe 'TO
    objMail.Subject = "Contrato de Trabajo" 'SUBJECT
    objMail.Body = "THIS IS A TEST MAIL" 'MAIL BODY

    objMail.Display

    mailJefe = ""
    pendientesDoc = ""
    noExistentes = ""


Next llave

1 Ответ

1 голос
/ 23 сентября 2019

Пожалуйста, попробуйте:

For Each llave In dictMov.Keys

    Set objMail = outlookApp.CreateItem(olMailItem) 'MAIL OBJECT


    'GET EMAIL
    For filaIndiceFuenteM = 2 To filaFuenteUltimaM
        If llave = planillaFuenteM.Cells(filaIndiceFuenteM, "K") Then
            mailJefe = planillaFuenteM.Cells(filaIndiceFuenteM, "M")
        End If
    Next filaIndiceFuenteM

    For filaIndiceFuente = 437 To filaFuenteUltima

        Set objMail = outlookApp.CreateItem(olMailItem) 'MAIL CREATION

        'GET MAIL
        For filaIndiceFuenteM = 2 To filaFuenteUltimaM
            If llave = planillaFuenteM.Cells(filaIndiceFuenteM, "K") Then
                mailJefe = planillaFuenteM.Cells(filaIndiceFuenteM, "M")
            End If
        Next filaIndiceFuenteM

        'GET DOCS TO SEND

            If llave = planillaFuente.Cells(filaIndiceFuente, "L") And planillaFuente.Cells(filaIndiceFuente, "AA") = "SIN DESP" Then
                'LOOK FOR THE FILES
                archivoFuente = Dir
                cadenaFuente = ""

                archivoFuente = Dir(cadenaDirectorio & planillaFuente.Cells(filaIndiceFuente, "C") & "*.pdf")
                cadenaFuente = cadenaDirectorio & archivoFuente
                If Dir(archivoFuente) <> "" Then
                    'IF TRUE (EXISTS) THEN ATTACH

                    objMail.Attachments.Add cadenaFuente

                Else
                    'IF FILE NEEDS TO BE SENT BUT DOESN'T EXISTS SHOW VARIABLE AS MSGBOX LATER
                    noExistentes = noExistentes & vbNewLine & planillaFuente.Cells(filaIndiceFuente, "D")
                End If
            End If
    Next filaIndiceFuente

    If noExistentes <> "" Then MsgBox noExistentes

    objMail.To = mailJefe 'TO
    objMail.Subject = "Contrato de Trabajo" 'SUBJECT
    objMail.Body = "THIS IS A TEST MAIL" 'MAIL BODY

    objMail.Display

    mailJefe = ""
    pendientesDoc = ""
    noExistentes = ""


Next llave

Вы должны были указать путь к вашему файлу, а не только имя и ваш, если в уставе также было указано неверное значение, я думаю, вы сделали 2 опечатки =)

...