Есть ли способ создать новую электронную почту Outlook из Access 2002 без использования команды SendObject? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть клиент, который использует Access 2002, потому что он позволяет репликацию. Он использует это в Windows 10 с Outlook из Office 365.

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

В Access команда SendObject создает и открывает текстовое электронное письмо, и пока это электронное письмо открыто, мой макрос Outlook для сканирования документа и прикрепления его к электронному письму не запускается.

Поэтому я хотел бы создать новое электронное письмо Outlook из Access, которое позволит мне запускать макрос Outlook.

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

Ниже приведен макрос Access с командой SendObject, за которой следует макрос 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 голосов
/ 11 октября 2019

Кажется, вам просто нужно автоматизировать 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
...