Я создал правило в outlook, которое ищет определенную текстовую строку в строке темы, затем перемещает сообщение в папку и выполняет приведенный ниже скрипт. Я хочу, чтобы проверить расширение файла, если "JPG", а затем сохранить его с предварительно определенной строкой в качестве имени файла.

Public Sub saveAttachtoDisk_1(itm As Outlook.MailItem)
    Dim objAtt As Outlook.Attachment
    Dim saveFolder As String
    Dim dateFormat
    Dim FiledasName As String
    Dim objattext As String
    Dim objfso As Object

    dateFormat = Format(Now, "yyyy-mm-dd H-mm")
    saveFolder = "C:\Users\reeddl\Documents\Expenses_Image_Filing"

    Set objfso = CreateObject("Scripting.FileSystemObject")
    sExt = objfso.GetExtensionName(objAtt.FileName)

    For Each objAtt In itm.Attachments
        FiledasName = itm.Subject
        Set fso = New FileSystemObject
        If UCase(objfso.GetExtensionName(objAtt.Name)) = "JPG" Then
            MsgBox (objfso.GetExtensionName(objAtt.Name))
            objAtt.SaveAsFile saveFolder & "\" & dateFormat & FiledasName
        End If
        Set objAtt = Nothing
    Next
End Sub

Ошибка сценария со следующей ошибкой во время выполнения

'429' Компонент ActiveX не может создать объект.

Это на
Set objfso = CreateObject("Scripting.FileSystemObject") строка в коде.

Я думаю, что я объявляю это неправильно? Кто-нибудь может посоветовать? Outlook 2016 на Windows.

1 ответ1

0

Я сам не пробовал, но вы можете попробовать использовать If UCase(objAtt.Name) Like "*.JPG" Then? Как это:

Public Sub saveAttachtoDisk_1(itm As Outlook.MailItem)
    Dim objAtt As Outlook.Attachment
    Dim saveFolder As String
    Dim dateFormat
    Dim FiledasName As String

    dateFormat = Format(Now, "yyyy-mm-dd H-mm")
    saveFolder = "C:\Users\reeddl\Documents\Expenses_Image_Filing"

    For Each objAtt In itm.Attachments
        FiledasName = itm.Subject
        Set fso = New FileSystemObject
        If UCase(objAtt.Name) Like "*.JPG" Then
            objAtt.SaveAsFile saveFolder & "\" & dateFormat & FiledasName
        End If
        Set objAtt = Nothing
    Next
End Sub

Если вам нужно поддерживать больше типов файлов, вы можете попробовать что-то вроде этого:

Select Case UCase(Right(objAtt.Name, 3))
    Case "JPG", "PNG", "BMP", "GIF"
    objAtt.SaveAsFile saveFolder & "\" & dateFormat & FiledasName
End Select

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .