Открыть прикрепленный файл Excel, полученный в письме Outlook - PullRequest
0 голосов
/ 14 октября 2018

Мне нужна помощь в коде Excel VBA. Я пытаюсь открыть вложение электронной таблицы Excel в электронном письме Outlook, используя VBA в файле Excel.Как я могу сделать следующие шаги в Excel vba:

  1. Откройте Outlook, перейдите в подпапку «Входящие» «Отчеты о тестах».
  2. Поиск конкретной темы и отправителя на сегодняшний деньдата или самая последняя дата в непрочитанных электронных письмах.
  3. Откройте вложение или скопируйте данные в файл Excel вложения.
  4. Активируйте уже открытую книгу Excel.Имя рабочей книги - «Fed 10».
  5. Скопируйте данные вложения в рабочую книгу «Fed 10», лист «Анализ».
  6. Закройте вложение и отметьте письмо как прочитанное.

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

У меня Excel 2010, если кто-то может помочь, я буду очень благодарен, если вы опишитекод шаг за шагом, который будет потрясающим.

Заранее спасибо

Код, упомянутый ниже:

Const olFolderinbox As Integer = 6
'--> Path for the attachment
Const AttachmentPath As String = "C:\Test\"

Sub ExtractAttachmentFromEmail()
    Dim o01Ap As Object, oOlns As Object, o011nb As Object
    Dim o011tm As Object

'--> Outlook Variables for email
    Dim eSender As String, dtRecvd As String, dtSent As String
    Dim sSubj As String, sMsg As String
'--> Get Outlook instance
    Set oOlAp = GetObject(, "Outlook.application")
    Set oOlns = oOlAp.GetNamespace("MAPI")
    Set o011nb = oOlns.GetDefaultFolder(olFolderinbox)

'--> Check if there are any actual unread emails
    If oOlInb.Items.Restrict("[UnRead] = True").Count = 0 Then
        MsgBox "NO Unread Email In Inbox"
        Exit Sub
    End If

'--> Store the relevant info in the variables
    For Each o011tm In oOlInb.Items.Restrict("[UnRead] = True")
        eSender = oOlItm.SenderEmailAddress
        dtRecvd = oOlItm.ReceivedTime
        dtSent = o011tm.CreationTime
        sSubj = oOlItm.Subject
        sMsg = oOlItm.Body
        Exit For
    Next

'--> New File Name for the attachment
    Dim NewFileName As String
    NewFileName = AttachmentPath & Format(Date, "DD-MM-YYYY") & "-"

'--> Extract the attachment from the 1st unread email
    For Each o011tm In oOlInb.Items.Restrict("[UnRead] = True")

    '--> Check if the email actually has an attachment
    If oOlItm.Attachments.Count <> 0 Then
    For Each oOlAtch In o011tm.Attachments

    '--> Download the attachment
    o0lAtch.SaveAsFile NewFileName & o0lAtch.Filename
         Exit For
        Next
    Else
        MsgBox "The First item doesn;t have an attachment"
    End If
    Exit For

End Sub

1 Ответ

0 голосов
/ 15 октября 2018

Сначала вы можете получить всю непрочитанную электронную почту в папке «Входящие» (в соответствии с вашим кодом вставки)

Во-вторых, вы можете скачать Excel и открыть его.

Вы можете обратиться к этому коду:

    Public Sub saveAttachtoDisk(itm As Outlook.MailItem)

    Dim objAtt As Outlook.Attachment
    Dim saveFolder As String
    Dim dateFormat, FilePath As String

    dateFormat = Format(Now, "yyyy-mm-dd H-mm")
    saveFolder = "c:\Users\abc1\Desktop" '<<EDIT removed trailing \
    For Each objAtt In itm.Attachments
      FilePath = saveFolder & "\" & dateFormat & _
                  " " & objAtt.DisplayName
      objAtt.SaveAsFile FilePath
      runit FilePath
    Next

End Sub

Sub runit(FilePath as String)
   Dim Shex As Object
   Set Shex = CreateObject("Shell.Application")
   Shex.Open (FilePath)
End Sub

'Edit: I used this to test the code, since I'm not running
'      it from a rule
Sub Tester()

    Dim Msg As MailItem

    Set Msg = Application.ActiveInspector.CurrentItem

    saveAttachtoDisk Msg

End Sub

Для получения дополнительной информации вы можете обратиться по этой ссылке:

Код для загрузки вложения из Outlook, сохранения его на рабочем столе и открытия его

Последнее, измените непрочитанное письмо на прочитанное.

o011tm.UnRead = False
...