Как посчитать общее количество вложений в outlook - PullRequest
0 голосов
/ 28 июня 2018

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

    Sub CountAttachmentsinSelectedEmails()
    Dim olSel As Selection
    Dim oMail As Object
    Dim AttCount As Long
    Dim strMsg As String

    Set olSel = Outlook.Application.ActiveExplorer.Selection

    For Each oMail In olSel
        'To confirm if the selected items are all emails
        If oMail.Class <> olMail Then
           strMsg = "Please select mail items only!"
           nRes = MsgBox(strMsg, vbOKOnly + vbExclamation)
           Exit Sub
        End If
        'Get the total number of the attachments in selected emails
        AttCount = oMail.Attachments.Count + AttCount
    Next

    strMsg = "There are " & AttCount & " attachments in the " & olSel.Count & " selected emails."
    nRes = MsgBox(strMsg, vbOKOnly + vbInformation, "Count Attachments")
End Sub

Но на самом деле это касается логотипа в подписи и любых встроенных или вставленных картинок в теле письма и показывает неправильный результат.

Итак, здесь мне нужна помощь по следующим двум вопросам:

  1. Есть ли способ пропустить их?

  2. Существует ли какой-либо код для подсчета общего количества документов во вложении zip или rar в электронное письмо?

Если есть какой-либо код, можем ли мы включить его сюда?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Обе вещи, которые вы хотите сделать, немного хитры.

Я не знаю, есть ли предсказуемый способ определить, является ли данное вложение логотипом или встроенным изображением. Может быть, но некоторые быстрые тесты показывают, что Outlook сообщает AttachmentType вложения как olByValue (1) независимо от того, является ли это подписью, логотипом, PDF или чем-то еще. Возможно, вам повезет с помощью «черного списка» определенных имен файлов или вложений, если вы обнаружите, что все вложения логотипа имеют одинаковые имена (например, при подсчете пропускайте файлы с именем image001.jpg. В качестве альтернативы вы можете перечислять конкретные вложения и показывать только вложения, например, файлы Excel, Word или PDF.

Относительно архивов ZIP / RAR: кажется, что VBA не имеет встроенной поддержки для открытия архивов ZIP. Однако, похоже, что вы можете делать вызовы в оболочку для их обработки. Возможно, вы захотите начать поиск чего-то вроде this .

0 голосов
/ 28 июня 2018

Не проверено, но одним из методов будет зацикливание всех вложений и проверка, заканчивается ли их имя файла на .zip или .rar

  Option Explicit

  Sub CountAttachmentsinSelectedEmails()
    Dim olSel As Selection
    Dim oMail As Outlook.MailItem
    Dim AttCount As Long
    Dim strMsg As String
    Dim nRes As Long
    Dim objAttach As Outlook.Attachment

    Set olSel = Outlook.Application.ActiveExplorer.Selection

    For Each oMail In olSel
        'To confirm if the selected items are all emails
        If oMail.Class <> olMail Then
           strMsg = "Please select mail items only!"
           nRes = MsgBox(strMsg, vbOKOnly + vbExclamation)
           Exit Sub
        End If

        'Loop on attachements
        For Each objAttach In Item.Attachments
            'increment counter if the attachement extention is .zip or .rar
            If LCase(Right(objAttach.FileName, 4)) = ".rar" Or LCase(Right(objAttach.FileName, 4)) = ".zip" Then
                AttCount = AttCount + 1
            End If
        Next objAttach 

    Next

    strMsg = "There are " & AttCount & " attachments in the " & olSel.Count & " selected emails."
    nRes = MsgBox(strMsg, vbOKOnly + vbInformation, "Count Attachments")
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...