Автоматически сгенерируйте письмо в Outlook и приложите документ с открытым текстом в VBS - PullRequest
1 голос
/ 13 января 2011

Я хочу написать макрос VBS для автоматического создания электронного письма в outlook и прикрепить текстовый документ. В настоящее время у меня есть макрос, который делает это для Excel, но я не могу заставить его работать на Word. Я не могу понять на всю жизнь, каким должен быть мой FName =. Любые предложения или помощь будет принята с благодарностью. Вот что у меня есть:

Sub AutoEmail()
    On Error GoTo Cancel

    Dim Resp As Integer
    Resp = MsgBox(prompt:=vbCr & "Yes = Review Email" & vbCr & "No = Immediately Send" & vbCr & "Cancel = Cancel" & vbCr, _
    Title:="Review email before sending?", _
    Buttons:=3 + 32)

    Select Case Resp

        'Yes was clicked, user wants to review email first
        Case Is = 6
            Dim myOutlook As Object
            Dim myMailItem As Object

            Set otlApp = CreateObject("Outlook.Application")
            Set otlNewMail = otlApp.CreateItem(olMailItem)
            FName = ActiveWord & "\" & ActiveWord.Name

            With otlNewMail
            .To = ""
            .CC = ""
            .Subject = ""
            .Body = "Good Morning," & vbCr & vbCr & "" & Format(Date, "MM/DD") & "."
            .Attachments.Add FName
            .Display

            End With


            Set otlNewMail = Nothing
            Set otlApp = Nothing
            Set otlAttach = Nothing
            Set otlMess = Nothing
            Set otlNSpace = Nothing


        'If no is clicked
        Case Is = 7
            Dim myOutlok As Object
            Dim myMailItm As Object

            Set otlApp = CreateObject("Outlook.Application")
            Set otlNewMail = otlApp.CreateItem(olMailItem)
            FName = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name

            With otlNewMail
            .To = ""
            .CC = ""
            .Subject = ""
            .Body = "Good Morning," & vbCr & vbCr & " " & Format(Date, "MM/DD") & "."
            .Attachments.Add FName
            .Send
            '.Display
            'Application.Wait (Now + TimeValue("0:00:01"))
            'Application.SendKeys "%s"

            End With

            'otlApp.Quit

            Set otlNewMail = Nothing
            Set otlApp = Nothing
            Set otlAttach = Nothing
            Set otlMess = Nothing
            Set otlNSpace = Nothing


        'If Cancel is clicked
        Case Is = 2
        Cancel:
            MsgBox prompt:="No Email has been sent.", _
            Title:="EMAIL CANCELLED", _
            Buttons:=64

    End Select

End Sub

1 Ответ

1 голос
/ 29 мая 2013

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

FName = Application.ActiveDocument.Path + "\" + Application.ActiveDocument.Name
' .Path returns only the Path where the file is saved without the file name like "C:\Test"
' .Name returns only the Name of the file, including the current type like "example.doc"
' Backslash is needed because of the missing backslash from .Path

otlNewMail.Attachements.Add FName

Возможно, вы также захотите сохранить текущий документ перед отправкой его через outlook, иначе вы отправите документ без внесенных изменений.

Function SaveDoc()
    ActiveDocument.Save
End Function

Я надеюсь, что это поможет другим, потому что код из вопроса мне очень помог при написании сценария для аналогичного сценария.

...