powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Outlook: VBA vs VBScript - как заставить работать?
9 сообщений из 9, страница 1 из 1
Outlook: VBA vs VBScript - как заставить работать?
    #32928061
SQLRоokiе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача: каждый день в Оutlook приходит мыло с данными, приаттачеными к письму.

Конечная цель: по факту прихода сохранить аттач в локальном фолдере на диске (дальше им занимается другой обработчик). Пока это все делалось руками, что совсем не гуд. Хочется автоматизировать и получить что-то типа триггера.

Сделано: в Outllok написана процедура, которая бегает по мессаджам (см. текст ниже) и сохраняет аттачи. Если ее запускать ручками, отрабатывает как надо. Создан rule, который запускается по факту приходу письма. Rule кладет письмо в фолдер Outlook и вот тут я застрял...

В идеале надо бы просто запустить процедуру. Как это прямо сделать - без понятия. Что можно сделать - в обработчик rule поставить запуск application. В качестве Application подсунусть файл на VBScript. В содержимое файла запихать существующей текст процедуры и нехай крутится.

Обломился на прямом копировании в .vbs текста процедуры (все что между Sub находится) - на первой же строчке пишет - error, unexpected end of statement. Собственно с VBS не знаком.

Что посоветуете?


Код: 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.
36.
37.
38.
39.
40.
Sub SaveAttachment()
    
    Dim myApp As Outlook.Application
    Dim myFolder, myFolderParent, Fi, CFolder As Outlook.MAPIFolder
    Dim myNS As Outlook.NameSpace
    Dim myItem As Outlook.MailItem
    Dim myAttach As Outlook.Attachment
    Dim MailFolderName, TargetFolderName As String
    Dim AttCounter, DDif As Integer
    
    MailFolderName = "..."
    TargetFolder = "..."
    SnapshotPrefix = "..."
           
    Set myApp = CreateObject("Outlook.Application")
    Set myNS = myApp.GetNamespace("MAPI")
    Set myFolder = myNS.GetDefaultFolder(olFolderInbox) ' get Inbox folder
    Set myFolderParent = myFolder.Parent ' get Parent Folder to Inbox
    
    ' Jump to the mail Folder:
    For Each Fi In myFolderParent.Folders
        If Fi.Name = MailFolderName Then Set CFolder = Fi
    Next
 
    'Scroll trough all items in mail folder:
    For Each myItem In CFolder.Items
        DDif = DateDiff("d", myItem.CreationTime, Now)
        If DDif <  3  Then
            AttCounter =  0 
                For Each myAttach In myItem.Attachments
                    AttCounter = AttCounter +  1 
                    ' Check if attachment is the snapshot:
                    If InStrRev(myItem.Attachments.Item(AttCounter).DisplayName, SnapshotPrefix) =  1  Then
                    ' Save attachments into the target folder 
                    myItem.Attachments.Item(AttCounter).SaveAsFile TargetFolder & myItem.Attachments.Item(AttCounter).DisplayName
                    End If
                Next myAttach
        End If
    Next myItem
    
End Sub
...
Рейтинг: 0 / 0
Outlook: VBA vs VBScript - как заставить работать?
    #32928143
SQLRоokiе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам спросил - сам ответил. Короче так работает:


Код: 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.
36.
37.
38.
39.
40.
41.
42.
'msgbox("point 1: Start")

    Dim myApp 
    Dim myFolder, myFolderParent, Fi, CFolder 
    Dim myNS 
    Dim myItem 
    Dim myAttach 
    Dim MailFolderName, TargetFolderName 
    Dim AttCounter, DDif

    MailFolderName = "..."
    TargetFolder = "..."
    SnapshotPrefix = "..."
           
    Set myApp = CreateObject("Outlook.Application")
    Set myNS = myApp.GetNamespace("MAPI")
    Set myFolder = myNS.GetDefaultFolder( 9 ) ' olFolderInbox
    Set myFolderParent = myFolder.Parent ' get Parent Folder to Inbox
    
    ' Jump to the mail Folder: 
    For Each Fi In myFolderParent.Folders
        If Fi.Name = MailFolderName Then Set CFolder = Fi
    Next

'msgbox("point 2: Middle")
 
    'Scroll trough all items in mail folder:
    For Each myItem In CFolder.Items
        DDif = DateDiff("d", myItem.CreationTime, Now)
        If DDif <  3  Then
            AttCounter =  0 
                For Each myAttach In myItem.Attachments
                    AttCounter = AttCounter +  1 
                    ' Check if attachment is the snapshot:
                    If InStrRev(myItem.Attachments.Item(AttCounter).DisplayName, SnapshotPrefix) =  1  Then
                    ' Save attachments into the target folder
                    myItem.Attachments.Item(AttCounter).SaveAsFile TargetFolder & myItem.Attachments.Item(AttCounter).DisplayName
                    End If
                Next
        End If
    Next

'msgbox("point 3: End")
...
Рейтинг: 0 / 0
Outlook: VBA vs VBScript - как заставить работать?
    #32928170
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ качестве Application подсунусть файл на VBScript.
А, я не уловил, почему мы так резко перескачили на VBScript. В rule можно запихать запуск исключительно VBScript????
...
Рейтинг: 0 / 0
Outlook: VBA vs VBScript - как заставить работать?
    #32928247
SQLRоokiе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторА, я не уловил, почему мы так резко перескачили на VBScript

Из соображений минимальности усилий по дальнейшей переделке - раз есть готовая функция на VBA и возможность запуска скриптов в Win - то VBScript самый разумный выбор.

Есть альтернатива?
...
Рейтинг: 0 / 0
Outlook: VBA vs VBScript - как заставить работать?
    #32928990
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу ошибаться, но, как то принято VBA называть VB версии 6.0, а 7.0 называется VB.NET (хотя на самом деле это не принципиально).
авторЕсть альтернатива?
Я никогда не работал с созданием консольных приложений в VB.NET, но, думается - это неплохая альтернатива VBScript (приду домой, погляжу в книгах).
...
Рейтинг: 0 / 0
Outlook: VBA vs VBScript - как заставить работать?
    #32929406
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мои кнги либо молчат по этому поводу, либо скромны до безобразия Хотя, на самом деле говорить особо нечего - создаёшь проект (консольного приложения), копируешь туда свой код из функции (целиком) и... запускаешь полученный .exe - всё работает, но... непристойно выпрыгивает окошечко dos во время работы.
Старожилы, вопрос на засыпку: как это окошечко сделать невидимым???
...
Рейтинг: 0 / 0
Outlook: VBA vs VBScript - как заставить работать?
    #32929415
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкак это окошечко сделать невидимым???
Sorry, ступил с вопросом, всё это настраивается уже в винде.
...
Рейтинг: 0 / 0
Outlook: VBA vs VBScript - как заставить работать?
    #32929435
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хе-хе-хе... НЕ ПОЛУЧАЕТСЯ...
Вопрос актуален:
авторСтарожилы, вопрос на засыпку: как это окошечко сделать невидимым???
...
Рейтинг: 0 / 0
Outlook: VBA vs VBScript - как заставить работать?
    #32929452
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ... Мои посты = путь развития от обезьяны до человека
авторЕсть альтернатива?
1. Создаём обычное приложение
2. Удаляем от туда форму
3. Добавляем новый модуль
4. Прописываем в нём Sub main() End Sub
5. Вставляем в Sub необходимый код и добавляем в проект необходимые References
6. В настройках проекта определяем Startup Object = Sub Main
7. В меню Build жмём на Build Solution
8. Из папки /bin извлекаем получившийся .exe
9. ИСПОЛЬЗУЕМ ЕГО ПО СВОЕМУ УСМОТРЕНИЮ
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Outlook: VBA vs VBScript - как заставить работать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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