Справочное руководство по TDMS 7.0 API
Example
Смотри также Отправить замечание

Glossary Item Box

Исходный текст

Option Explicit
Call CopyAttachmentsToDesktop()


'==============================================================================
'Поместить объекты, вложенные в отобранные почтовые сообщения, на Рабочий стол

Sub CopyAttachmentsToDesktop()
        
        Dim FiltMsgs, mess, AddObjs, AttachObj, objCol, qryTemp, RetVal 
        
        'Среди всей почты пользователя отобрать сообщения от Системного администратора
        Set FiltMsgs = ThisApplication.Messages
        With FiltMsgs
                .Filter.From = "SYSADMIN"
                .Filter.To = ThisApplication.CurrentUser.SysName 
                .Filter.On = True 'включить фильтр сообщений
        End With

        'Создать временную объектную переменную objCol типа TDMSObjects
        Set qryTemp = ThisApplication.CreateQuery
        Set objCol = qryTemp.Objects
        
        'Добавить во временную коллекцию все объекты-вложения из почтовых сообщений
        For Each mess In FiltMsgs 
                If mess.Attachments.Count > 0 Then
                        For Each AttachObj In mess.Attachments
                                objCol.Add AttachObj
                        Next
                End If
        Next
        
        'Если коллекция объектов-вложений непустая, спросить пользователя - 
        'надо ли переместить эти объекты на Рабочий стол
        If objCol.Count > 0 Then 
                RetVal = MsgBox("В отобранных почтовых сообщениях (" & FiltMsgs.Count &_
                             ") содержится " & objCol.Count & " объектов-вложений. Поместить их на Рабочий стол?", _
                             vbQuestion & vbYesNo, "Обработка почтовых сообщений")
        Else 
                'Если объектов-вложений нет, то выйти из подпрограммы
                Msgbox "Отобранные почтовые сообщения не содержат вложений."
                Exit Sub
        End If

    'Перемещаем объекты-вложения на Рабочий стол.
    If RetVal <> vbNo Then
            On Error Resume Next
            AddObjs = 0 'Счетчик перемещенных объектов
            For Each AttachObj In objCol
                    ThisApplication.Desktop.Objects.Add AttachObj 'Поместить объект на Рабочий стол
                    MsgBox ("Новый объект-вложение будет перемещен на рабочий стол. Индекс - " & FiltMsgs.Index(AttachObj))
                    If Err <> 0 Then
                            'Сообщить об ошибке перемещения объекта
                            MsgBox "Во время перемещения объекта """ & AttachObj.Description & """" & Chr(13) & _
                                    "произошла ошибка. Возможно, объект уже на Рабочем столе.", vbInformation
                            Exit For
                    Else: AddObjs = AddObjs + 1 'Увеличить счетчик
                    End If
            Next
            'Сообщить о результате операции
            MsgBox AddObjs & " объектов помещено на Рабочий стол.", vbInformation
    End If
    
    'Обнулить объектные переменные
    Set objCol = Nothing
    Set qryTemp  = Nothing
    Set FiltMsgs = Nothing
End Sub 
'==============================================================================
© 2023 CSoft Development. Все права защищены.