Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29

Автозапуск в Outlook

31.10.2011, 10:48. Показов 6250. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как правильно сделать ссылку на "my_procedure", которая находится в ThisOutlookSession.

Visual Basic
1
2
3
4
Private Sub my_pricedure()
ti = Now + TimeValue("00:00:05")
Excel.Application.OnTime ti, "my_procedure"
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.10.2011, 10:48
Ответы с готовыми решениями:

VB Outlook. Как обратиться к выделенному тексту в окне предварительного просмотра Outlook?
Здравствуйте! Можете помочь? Мне нужно подцепить в макросе на VB Outlook 2007 текст, выделенный в поле предварительного просмотра писем. Не...

Outlook: как корректно внедрить file.msg в папку в Outlook
собственно вопрос. делаю так: Dim OL As Outlook.Application Dim newMail As Object Set OL = New Outlook.Application Set newMail...

Миграция параметров учетной записи с MS Outlook 2003 в MS Outlook 2013
Доброго времени суток, Вопрос: я пользовался MS Outlook 2003, и в нем, у меня были заригистрированы 11 ящиков, когда я перешел на...

17
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
31.10.2011, 10:57
Цитата Сообщение от richhamm Посмотреть сообщение
Подскажите как правильно сделать ссылку
а откуда надо делать ссылку - из Excel запустить Процедуру, которая находится в Outlook?
0
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29
31.10.2011, 11:03  [ТС]
Private Sub my_pricedure() находится в Outlook
Я так понимаю, что в этом месте - Excel.Application.OnTime ti, "my_procedure" - VBA работает уже с Excel, и "my_procedure" требуется вызывать уже из Excel
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
31.10.2011, 11:23
richhamm,
т.е. наоборот: из Outlook запустить процедуру в Excel?
0
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29
31.10.2011, 12:26  [ТС]
Видимо, Да. Это цикл. Из процерудуры my_procedure вызывается эта же процедура my_procedure. Все это находится в Outlook.
Но при использовании Excel.Application.OnTime ti, "my_procedure" он думает что "my_procedure" находится в Excel, а не в Outlook. Пишет ошибку: "Не удается выполнить макрос "my_procedure". Возможно, этот макрос отсутствует в текущей книге либо все макросы отключены."
Прошу прощения, если путанно объясняю.
В первом сообщении опечатка, нормальный код ниже:

Visual Basic
1
2
3
4
5
Private Sub my_procedure()
 
ti = Now + TimeValue("00:00:05")
Excel.Application.OnTime ti, "my_procedure"
End Sub
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
31.10.2011, 13:58
richhamm,
а какая у вас задача? Зачем нужно запускать процедуру через определённый промежуток времени?

Просто в Outlook с этим сложность.
1
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29
31.10.2011, 14:26  [ТС]
Задача - сделать правило автоформатирования текста в зависимости от даты поступления письма (Автозапуск в Outlook). Но правило в Outlook не сохраняется, и при смене папки - все, что было сделано скриптом слетает. Я решил сделать обновление автоформата по времени. Если есть другое решение, буду только рад.
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
31.10.2011, 14:32
Цитата Сообщение от richhamm Посмотреть сообщение
Задача - сделать правило автоформатирования текста в зависимости от даты поступления письма (Автозапуск в Outlook).
а в скобках зачем?
0
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29
31.10.2011, 14:49  [ТС]
Вроде как, по правилам русского языка
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
01.11.2011, 13:04
Цитата Сообщение от richhamm Посмотреть сообщение
Вроде как, по правилам русского языка
просто вставилось, как гиперссылка.

Можно не отвечать на это сообщение: просто я пояснил, почему так спросил.


richhamm,
напишите по пунктам, как сделать то, что вам нужно, но через пользовательский интерфейс, а не через VBA?
0
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29
01.11.2011, 14:26  [ТС]
Хорошо.
В outlook 2007-> Вид -> Текущее представление -> Настройка текущего представления -> Автоформат -> Добавить -> Условие -> Дополнительно -> Поле -> Все поля сообщения -> Получено -> Условие: не ранее -> Значение: ?????

Проблема: надо указать значение "сейчас-30 минут", но формулу outlook не понимает

Добавлено через 1 час 6 минут
Пример. Ставим Условие: не ранее -> Значение: сегодня
Шрифт -> ставим курсир

Получаем в итоге: все сообщения, полученные сегодня, выделены курсивом. Все сообщения, полученные ранее, - без курсива
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
01.11.2011, 14:27
richhamm,
я просто в Справке не могу найти вообще информации по этой теме: как задавать эти даты, время.
0
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29
01.11.2011, 14:58  [ТС]
Там можно с помощью VBA подставить формулу на SQL "urn:schemas:httpmail:datereceived"< = '01.11.2011 09:22:54'. Но в ней указывается конкретная дата. Пример есть тут:
В outlook 2007-> Вид -> Текущее представление -> Настройка текущего представления -> Отбор
И как запихнуть в эту формулу переменную, кроме как на VBA я не придумал.
Кстати, в окне "автоформат" разработчиком почему-то не предусмотрена вкладка "SQL"
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
01.11.2011, 15:36
richhamm,
надо просто какую-нибудь справку найти по этой теме - просто так что ли выдумывать синтаксис написания даты и время в поле Значение:

А в #7 о каком правиле идёт речь?
0
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29
01.11.2011, 15:50  [ТС]
Так он же придуман уже...Прикладываю рабочий код. Создает новое представление Actions. Добавляет Автоматическое форматирование, при котором все письма полученные более 30 минут (330 по UTC) назад выделяются синим цветом. Вот это правило и имеется ввиду. Можно запустить и протестировать - при смене папки, по каким-то причинам, все сообщения станут синими до следующего запуска макроса.
Visual Basic
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
Sub ChangeCurrentView()
    Dim myOlExp As Outlook.Explorer
    Dim myView As View
    Dim clViews As Views
    Set myOlExp = Application.ActiveExplorer
    If myOlExp.CurrentFolder = "Входящие" Then
        myOlExp.CurrentView = "Сообщения"
    End If
Set clViews = Application.ActiveExplorer.CurrentFolder.Views
    clViews.Remove ("Actions")
Set myView = clViews.Add("Actions", Outlook.OlViewType.olTableView)
    myView.Save
    myView.Apply
    
    
Dim olkView As Outlook.View, _
    olkFont As Outlook.ViewFont, _
    olkAFR As Outlook.AutoFormatRule
    Dim mtime As Date
    Dim mtime1 As String
    Set olkView = Application.ActiveExplorer.CurrentView
    Set olkAFR = olkView.AutoFormatRules.Add("просрочка")
    With olkAFR
    mtime = DateAdd(Interval:="n", Number:=-330, Date:=Now())
        .Filter = Chr(34) & "urn:schemas:httpmail:datereceived" & Chr(34) & "<= '" & mtime & "'"
        Debug.Print olkAFR.Filter
        Set olkFont = .Font
        With olkFont
            .Name = "Arial"
            .Color = 5
        End With
        .Enabled = True
    End With
    olkView.Save
    olkView.Apply
    Set olkView = Nothing
    Set olkFont = Nothing
    Set olkAFR = Nothing
End Sub
0
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29
03.11.2011, 12:20  [ТС]
Уважаемые! Помогите, пожалуйста с этой проблемой.
0
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29
08.11.2011, 18:28  [ТС]
Visual Basic
1
2
3
4
5
Private Sub my_procedure()
 
ti = Now + TimeValue("00:00:05")
Excel.Application.OnTime ti, "my_procedure"
End Sub
В приведенном примере Excel.Application.OnTime ti, "my_procedure" ошибку выдает эксель! и правильно, поскольку my_procedure находится в outlook.
надо ему как-то указать что он в outlook находится.
вроде того: "outlook.thisoutlooksession.my_procedure "
Подскажите как правильно это сделать

Добавлено через 2 часа 36 минут
В общем, разговор с самим собой

Visual Basic
1
2
3
4
Public Sub my_procedure()
ti = Now + TimeValue("00:01:00")
Excel.Application.OnTime ti, Outlook.Application.my_procedure()
End Sub
Такой конструкцией получилось вызвать нужный макрос (самого себя). Первый цикл проходит успешно (только "ti" не учитывает почему-то). На втором прогоне (макрос получается работает внутри первого макроса) выдает 438 ошибку. Может надо как-то переменную очистить? или первый макрос завершить? не пойму что не работает.
0
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 29
15.11.2011, 17:22  [ТС]
Помогите, пожалуйста я в растерянности....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.11.2011, 17:22
Помогаю со студенческими работами здесь

Outlook не открывает архив .pst созданный самим Outlook
Outlok не открывает архив .pst созданными самими оutlokами... Есть важные емаили

Outlook 2010. Как выполнить отображение новой учетной записи на месте файла данных Outlook?
Здраввствуйте! Вопрос такой: как сделать вместо отображения &quot;Файл данных Outlook&quot; новой учетной записи? Я видел на других ПК,...

Запуск макароса Outlook из другого макроса Outlook
Добрий день! как в Outlook 2010 запустить макарос Outlook из другого макроса Outlook

Перенос почты из Outlook 2003 в Outlook Express
Никак не удается решить задачу по переносу сообщений из Outlook 2003 (стоит на одном компе) в Outlook Express (стоит на другом компе). ОС...

DragDrop из Outlook, Outlook Express
Требуется разрешить вытаскивание почты (DragDrop) из Outlook и Outlook Express в мою VB программу. Проблема в том, что VB опознаёт данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru