有没有一种方法可以在不使用SendObject命令的情况下从Access 2002创建新的Outlook电子邮件?

时间:2019-10-11 16:42:20

标签: ms-access outlook access-vba outlook-vba email-attachments

我有一个使用Access 2002的客户端,因为它允许复制。他正在Windows 10和Office 365的Outlook上使用它。

目标是创建一封包含所有信息的新电子邮件,并附加扫描的投标,以便我的客户可以查看该电子邮件,进行所需的任何更改然后发送。

在Access中,SendObject命令创建并打开一个纯文本电子邮件,当该电子邮件打开时,我的Outlook宏以扫描文档并将其附加到电子邮件将无法运行。

因此,我想从Access创建一个新的Outlook电子邮件,该电子邮件使我可以运行Outlook宏。

或者,如果我可以让Access 2002创建电子邮件并将扫描的文档附加到其中,我想我可以使用msgboxes来验证特定项目。

下面是带有SendObject命令的Access宏,后跟Outlook宏。

Private Sub EmailProposal_Click() 
'Access macro.
Dim stDocName As String
Dim stEmailAddress As String
Dim stSubject As String
Dim stMessage As String

    stDocName = "rptProposal"
    stEmailAddress = Forms!RequestForm!EmailAddress.Value
    stSubject = "PROPOSAL"
    stMessage = "Your proposal is attached." & vbCrLf & vbCrLf & "If you have any questions, please call us."

    'Email the proposal.
    DoCmd.SendObject acReport, stDocName, acFormatRTF, stEmailAddress, , , stSubject, stMessage
End Sub

Sub Scan()
'Outlook macro.
Dim myItem As Outlook.MailItem
Dim myAttachments As Outlook.Attachments

     On Error Resume Next
     Dim objCommonDialog As WIA.CommonDialog
     Dim objImage As WIA.ImageFile
     Dim strPath As String

     Set objCommonDialog = New WIA.CommonDialog
     'This shows the dialog box. I'd rather tell it what to do instead of having to manually choose each time.
     Set objImage = objCommonDialog.ShowAcquireImage        

     strPath = Environ("TEMP") & "\TempScan.jpg"            'Save the scan.
     If Not objImage Is Nothing Then
         objImage.SaveFile strPath        ' save into temp file
         On Error GoTo ErrHandler

         If TypeName(ActiveWindow) = "Inspector" Then
             If ActiveInspector.IsWordMail And ActiveInspector.EditorType = olEditorWord Then
               ActiveInspector.WordEditor.Application.Selection.Inlineshapes.AddPicture strPath        'Insert into email. I want to attach it instead.
             End If
         End If
         Kill strPath
     Else
        MsgBox "The Scan macro in Outlook did not find a document." & vbCrLf & vbCrLf & _ 
        "Please place the proposal in the printer so it can be scanned.", vbOKOnly
     End If

lbl_Exit:
     Set objImage = Nothing
     Set objCommonDialog = Nothing
     Exit Sub

ErrHandler:
     Beep
     Resume lbl_Exit
End Sub

1 个答案:

答案 0 :(得分:0)

似乎您只需要自动化Outlook即可发送带有所需内容设置的电子邮件。看看下面的文章为您提供了Outlook自动化的基础知识:

Sub Send_Mail_Outlook()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    strbody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2" & vbNewLine & _
              "This is line 3" & vbNewLine & _
              "This is line 4"

    On Error Resume Next
    With OutMail
        .To = "eugene@astafiev.com"
        .CC = ""
        .BCC = ""
        .Subject = "This is the Subject line"
        .Body = strbody
        'You can add a file like this
        '.Attachments.Add ("C:\test.txt")
        .Send   'or use .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub