powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание сообщения с вложениями в Outlook 2003 (макросы)
5 сообщений из 5, страница 1 из 1
Создание сообщения с вложениями в Outlook 2003 (макросы)
    #36051625
SchTiRlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Есть следующая задача... Пользователь выделяет в почтовом клиенте Outlook 2003 несколько писем, нажимает на некую кнопку, которая привязана к макросу, после чего создаётся сообщение с определённым получателем, темой, а в качестве вложений у вновь созданного сообщения должны быть те сообщения, которые пользователь выделил.

vb я не знаю, но по частям найденным в Интернете я написал/собрал макрос, который:
1. создаёт сообщение с нужными заполненными полями,
2. получает список выделенных сообщений и пытается их аттачить.
3. Отображает сообщение.

Из за незнания особенностей vb не могу понять, как прикрепить в виде вложений к созданному сообщению объекты, которые были получены из списка выделенных сообщений. Прикрепить полученные объекты методом Attachmrnts.Add не получается.

Исходник макроса ниже

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Sub spam()

    Dim OutlookApp As Object
    Dim SM As Object
    Dim objItem As Object
    Dim objMail As MailItem
    Dim OutSlctn As Outlook.Selection
    
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutSlctn = OutlookApp.ActiveExplorer.Selection          'Выборка выделения
    
    
    If MsgBox("Отправить выделенные письма?", vbQuestion + vbOKCancel) = vbOK Then
        
        Set SM = OutlookApp.CreateItem(olMailItem)              'Создаем объект
        
        SM.To = "spam@test.test"                          'Электронный адрес
        SM.Subject = "SPAM"                                     'Тема
        'SM.Body = ""                                           'Сообщение

        For Each objItem In OutSlctn
            If objItem.Class = olMail Then
                SM.Attachments.Add (objMail) ' Вот тут должен происходить аттач, но вот так, как есть сейчас, аттач не получается
            End If
        Next
        On Error Resume Next                                    'Перехват возможной ошибки
        SM.Display                                              'Отображаем сообщение
        'SM.Send                                                'Посылаем сообщение
            
        Set SM = Nothing                                        'Очищаем использовавшиеся объекты
    End If
    
    Set OutlookApp = Nothing 'Очищаем использовавшиеся объекты
    
End Sub

Посмотрел в msdn про метод Attachments.Add там написано

Dim instance As Attachments
Dim Source As Object
Dim Type As Object
Dim Position As Object
Dim DisplayName As Object
Dim returnValue As Attachment

returnValue = instance.Add(Source, Type, Position, DisplayName)

...

Parameters

Source
The source of the attachment. This can be a file (represented by the full file system path with a file name) or an Outlook item that constitutes the attachment .

Type
The type of the attachment. Can be one of the OlAttachmentType constants.

Position
This parameter applies only to e-mail messages using Microsoft Outlook Rich Text format: it is the position where the attachment should be placed within the body text of the message. A value of 1 for the Position parameter specifies that the attachment should be positioned at the beginning of the message body. A value 'n' greater than the number of characters in the body of the e-mail item specifies that the attachment should be placed at the end. A value of 0 makes the attachment hidden.

DisplayName
This parameter applies only if the mail item is in Rich Text format and Type is set to olByValue: the name is displayed in an Inspector object for the attachment or when viewing the properties of the attachment. If the mail item is in Plain Text or HTML format, then the attachment is displayed using the file name in the Source parameter.

Return Value
An Attachment object that represents the new attachment.


Как я понимаю (см. строку выделенную полужирным выше) в качетсве источника вложения данному методу можно указывать Outlook элемнеты. Может я эти объекты из списка выделения не правльно исопльзую или их нужно как то конвертировать. Помогите разобраться.

Заранее спасибо.
...
Рейтинг: 0 / 0
Создание сообщения с вложениями в Outlook 2003 (макросы)
    #36051717
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SchTiRlic
Код: plaintext
1.
2.
3.
4.
5.
        For Each objItem In OutSlctn
            If objItem.Class = olMail Then
                SM.Attachments.Add (objMail) ' Вот тут должен происходить аттач, но вот так, как есть сейчас, аттач не получается
            End If
        Next
В цикле ты перебираешь выделенные объекты и кладешь их по очереди в objItem. А потом берешь из ниоткуда objMail и пытаешься с ним работать.
Либо аттач objItem, либо копируй objItem в objMail перед тем как работать с ним.
...
Рейтинг: 0 / 0
Создание сообщения с вложениями в Outlook 2003 (макросы)
    #36051752
SchTiRlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, прошу прощения, это моя опечатка, там должно быть objItem.
Код: plaintext
1.
2.
3.
4.
5.
        For Each objItem In OutSlctn
            If objItem.Class = olMail Then
                SM.Attachments.Add (objItem)
            End If
        Next

Но дело в том, что такая контрукция не работает. Выдаёт ошибку. Там что то с типами не то или подобное.
...
Рейтинг: 0 / 0
Создание сообщения с вложениями в Outlook 2003 (макросы)
    #36053411
SchTiRlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если быть точным, то сообщение об ошибке следующее:

"Неправильное имя файла или каталога"

Метод SM.Attachments.Add (objItem) расченивает objItem, как полный путь к какому либо файлу для аттача.

Я вообще уже стал подумывать о временном сохранениии сообщений в какую либо папку и добавлении их в качестве вложений.
...
Рейтинг: 0 / 0
Создание сообщения с вложениями в Outlook 2003 (макросы)
    #36053485
SchTiRlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос решён.

В коде была ошибка в синтаксисе, метод заработал корректно когда я указал параметры без круглых скобок. Так же я ещё добавил указание типа аттачмента. Вот так работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
        
        For Each objItem In OutSlctn
            If objItem.Class = olMail Then
                SM.Attachments.Add objMail, olByValue ' olByValue - The attachment is a copy of 
                                                      ' the original file and can be accessed even
                                                      ' if the original file is removed. 
            End If
        Next

Спасибо за внимание.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание сообщения с вложениями в Outlook 2003 (макросы)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]