Страницы: 1 2 След.
RSS
Поиск сообщений в Outlook из экселя
 
Помогите, пожалуйста!

Мне надо с помощью макроса в эксель осуществить поиск сообщений в Outlook по их названию.
Есть темы про копирование вложений в аутлуке, есть темы про обращения из эксель к другим приложениям, но...
Я так понимаю, у каждого приложения свои переменные. У меня эксель ругается. Пишет, что нет такого типа переменных как MailItem
Код
Sub Outlook()
Dim mli As MailItem
Dim flr As Outlook.MAPIFolder
On Error Resume Next
For Each mli In flr.Items
If mli.Subject = "Ïðèâåò" Then
mli.Attachments.Open
End If
Next
End Sub
 
Я конечно далек от макросов но зачем вам нужно экселем лезть в Outlook, может наоборот заставить Outlook выкладывать содержимое определенного письма в определенную папку а макросу в экселе дать задание копаться в этой папке и тянуть к себе что плохо лежит
Лень двигатель прогресса, доказано!!!
 
Пользователь не будет лезть в свой аутлук и прописывать макрос для аутлука.
 
Цитата
zavhoz1984 написал: У меня эксель ругается
Как из Excel обратиться к другому приложению
Код
Dim mli As Object
Dim flr As Object
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Нашел другой код. Та же проблема. Поставил object выдает ошибку.
Код
Sub Ïåðâîå_MailSave()
    Dim oOutlook As Object ' New Outlook.Application
    Dim oNamespace As Object 'Outlook.Namespace
    Dim myFolder As Object 'Outlook.Folder
    Dim myMail As Object 'Outlook.Items
    Dim myItem As Object 'Outlook.MailItem
 
        Set oNamespace = oOutlook.GetNamespace("MAPI")
        Set myFolder = oNamespace.GetDefaultFolder(olFolderInbox)
        Set myMail = myFolder.Items
        For Each myItem In myMail
            On Error Resume Next
            
        If myItem.Subject = "1" Then
        
        MsgBox (myItem.Subject)
        End If
        Next
End Sub
 
zavhoz1984, копируйте код в русской раскладке, чтобы кириллица нормально отображалась. (своё сообщение можно редактировать)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
zavhoz1984 написал: Поставил object выдает ошибку.
А ведь надо было не только object поставить, но и статью почитать. Может и ошибку бы поняли, увидев что именно Вам код подсвечивает(olFolderInbox)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Я ее уже раз пять прочитал. Там только гетобджект.

Я и его пытался прикрутить - не работает.
Код
Sub Первое_MailSave()
    Dim oOutlook As Object ' New Outlook.Application
    Dim oNamespace As Object 'Outlook.Namespace
    Dim myFolder As Object 'Outlook.Folder
    Dim myMail As Object 'Outlook.Items
    Dim myItem As Object 'Outlook.MailItem
 
 Set oOutlook = GetObject(, "outlook.Application")
 'Set oNamespace = GetObject(, "outlook.Application")
 'Set myFolder = GetObject(, "outlook.Application")
 
        Set oNamespace = oOutlook.GetNamespace("MAPI")
        Set myFolder = oNamespace.GetDefaultFolder(olFolderInbox)
        Set myMail = myFolder.Items
        For Each myItem In myMail
            On Error Resume Next
            
        If myItem.Subject = "1" Then
        
        MsgBox (myItem.Subject)
        End If
        Next
End Sub
 
Цитата
zavhoz1984 написал: Я ее уже раз пять прочитал. Там только гетобджект
8-0
Вы её как читали-то? Я Вам процитирую самое важное из статьи на данный момент:
Цитата
Метод же CreateObject еще называется методом позднего связывания. Применяя его не возникнет проблем с MISSING, очень часто возникающих при раннем связывании. Поэтому я рекомендовал бы при разработке использовать раннее связывание для удобства использования свойств и методов(если Вы их не знаете), а перед распространением приложения к коде заменить все именованные константы(типа wdLine) на числовые константы(для wdLine это 5) и применить позднее связывание.Посмотреть числовое значение константы можно просто записав её в коде, начать выполнение кода через F8 и навести курсор мыши на эту константу. Всплывающая подсказка покажет числовое значение. А заменять эти константы их числовыми значениями в случае с поздним связыванием необходимо, т.к. Excel не знает их значений.
Попробую пояснить этот момент поподробнее: при подключении библиотеки Wordа(Word 12 Object Libbary) мы так же подключаем и все свойства, методы и константы, которые доступны из Wordа. И их использование напрямую становится доступно из Excel и мы можем смело написать что-то вроде wbLine и Excel поймет эту константу. При позднем же связывании мы уже не подключаем библиотеки Word(во избежание ошибок совместимости) и как следствие - методы, свойства и константы Wordа для Excel становятся чем-то неизвестным и не документированным и мы получим ошибку "Variable not defined" при попытке назначить свойство через wdLine. Поэтому и надо все константы заменять их числовыми значениями.
Как думаете, знает Excel что-нибудь про константу olFolderInbox?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал: знает Excel что-нибудь про константу olFolderInbox?
Таки я об этом и пишу с самого начала, что нихрена он местных констант не знает. Я и этот кусок раз пять прочитал и НИ-ЧЕ-ГО не понял. Тулс-референсес в аутлуке нету. А про это связывание, вы ж там не намекнули и не привели пример КАК их заменить числами...

Вот я вот, только месяц назад узнал, что есть такое слово "макросы", до этого когда-то давно учил с, поэтому в алгоритмах ЧЕТА понимаю. Но вот то, что вы написали для меня - это ... бред под тяжелыми наркотиками. Вы не могли бы пояснить свою же статью.

Как мне этот фолдер числом обозначить и ссылаться на него?
 
zavhoz1984, запускаете аутлук, заходите в окно макросов, жмёте Ctrl+G, набираете:
? olFolderInbox
жмёте энтер и видите значение этой константы. Вот, это значение и подставляете в код вместо самой константы.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
zavhoz1984 написал:
вы ж там не намекнули и не привели пример КАК их заменить
А Вы точно все читаете? И в статье, и в моей цитате выше это черным по белому написано:
Цитата
The_Prist написал:
а перед распространением приложения к коде заменить все именованные константы(типа wdLine) на числовые константы(для wdLine это 5) и применить позднее связывание.Посмотреть числовое значение константы можно просто записав её в коде, начать выполнение кода через F8 и навести курсор мыши на эту константу
Т.е. это для Вас даже не намек, а рассуждения о постороннем? Вы не можете поставить ссылку в проекте на Outlook, навести курсор мыши на свою константу и посмотреть её числовое значение? А потом снять ссылку на Outlook?

С таким подходом лучше дальше и не пытайтесь коды писать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал: С таким подходом лучше дальше и не пытайтесь коды писать.
Не стоит горячиться. Если человек уже начал автоматизировать рутину, то уже не бросит. Кодирование вызывает зависимость. :)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Вопрос не в этом. Человек элементарно не хочет читать вдумчиво то, что ему советуют.
Цитата
zavhoz1984 написал:
Тулс-референсес в аутлуке нету
1. А почему у меня есть?
2. Зачем оно в Outlookе, если весь код в Excel?
Цитата
zavhoz1984 написал:
А про это связывание, вы ж там не намекнули и не привели пример КАК их заменить числами
Конечно, не намекнул. Я прямо написал как посмотреть значение и что им надо заменить именованные константы. Если под намеком подразумевалось - ребята, вот вам константы и их числовые значения на все случаи жизни - то это нереально.
Я не ожидал того, что заменить по инструкции:
olFolderInbox на 6 вызовет такие сложности у человека.
Код
oNamespace.GetDefaultFolder(6)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал:
olFolderInbox на 6 вызовет такие сложности у человека.
Код?1oNamespace.GetDefaultFolder(6)
Прист, спасибо большое. И столько времени на препирательства "ты читал, ты читал, мл...?" Вот так на примере все ГОРАЗДО понятнее.
 
Цитата
JayBhagavan написал:
zavhoz1984, запускаете аутлук, заходите в окно макросов, жмёте Ctrl+G, набираете:
? olFolderInbox
жмёте энтер и видите значение этой константы. Вот, это значение и подставляете в код вместо самой константы.
Люди, как вы макросы пишете???
Ведь комп - это не человек, он, цуко, просто так не догадается.

Вот что мешает написать, что код надо вбивать в окно имидиэт?

Также и к Присту. Мол нажми там f8... Где нажми? Когда нажми?
 
Цитата
zavhoz1984 написал: Вот что мешает написать, что код надо вбивать в окно имидиэт?
Цитата
JayBhagavan написал: жмёте Ctrl+G
Потому, что уже в нём пишите после нажатия указанной комбинации клавиш.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Пишу сюда код, а то вдруг еще кто-нибудь столкнется с "профессионалами" и нихрена не поймет ))))
Код
Sub Ïåðâîå_MailSave()
    Dim oOutlook As Object ' New Outlook.Application
    Dim oNamespace As Object 'Outlook.Namespace
    Dim myFolder As Object 'Outlook.Folder
    Dim myMail As Object 'Outlook.Items
    Dim myItem As Object 'Outlook.MailItem
 
 Set oOutlook = GetObject(, "outlook.Application")
 'Set oNamespace = GetObject(, "outlook.Application")
 'Set myFolder = GetObject(, "outlook.Application")
 
        Set oNamespace = oOutlook.GetNamespace("MAPI")
        Set myFolder = oNamespace.GetDefaultFolder(6)
        Set myMail = myFolder.Items
        For Each myItem In myMail
            On Error Resume Next
            
        If myItem.Subject = "1" Then
        
        MsgBox (myItem.Subject)
        End If
        Next
End Sub
 
zavhoz1984, Вы бы ещё комментарии к каждой записи добавили и цены бы этому коду не было. :)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Не подскажите, почему не работает строка
Код
myItem.Attachments.Open

Чо он не открывает прикрепленный к найденому сообщению файл?
 
Цитата
JayBhagavan написал:
zavhoz1984, Вы бы ещё комментарии к каждой записи добавили и цены бы этому коду не было.
Я сам смутно понимаю. Макрос бегает по всем сообщениям в папке входящие и если находит сообщение с названием "1", то выдает месседжбокс.
 
Люди, помогите с кодом. Почему не открывает вложение в найденном файле?
Код
myItem.Attachments.Open
 
Все понял.
Единичку надо было в скобки поставить.
 
Блин, все равно не открывает :((((((((((((((((
 
Так и не смог окрыть прямо из аутлука. Пришлось сохранять в папку и окрывать уже оттуда.
Код
Sub Первое_MailSave()
    Dim oOutlook As Object ' New Outlook.Application
    Dim oNamespace As Object 'Outlook.Namespace
    Dim myFolder As Object 'Outlook.Folder
    Dim myMail As Object 'Outlook.Items
    Dim myItem As Object 'Outlook.MailItem
Dim ad As String
 
 Set oOutlook = GetObject(, "outlook.Application")
 
        Set oNamespace = oOutlook.GetNamespace("MAPI")
        Set myFolder = oNamespace.GetDefaultFolder(6)
        Set myMail = myFolder.Items

        For Each myItem In myMail
            On Error Resume Next
            
        
        If myItem.Subject = "1" Then
        myItem.Attachments(1).SaveAsFile "C:\Users\aaa\Desktop\Саша 2\" & myItem.Attachments(1).DisplayName
        ad = "C:\Users\aaa\Desktop\Саша 2\" & myItem.Attachments(1).DisplayName
        MsgBox (ad)
        Workbooks.Open(Filename:=ad).RunAutoMacros Which:=xlAutoOpen
        End If
        Next
End Sub
 
Цитата
zavhoz1984 написал: Так и не смог окрыть прямо из аутлука
Открывая яко бы из аутлука, на самом деле, аутлук сохраняет файл во временную папку, а после уже открывает.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
zavhoz1984 написал:
Также и к Присту. Мол нажми там f8... Где нажми? Когда нажми?
На клавиатуре. Если Вы не знаете как производить отладку кода - то надо с этого начинать, а не допытываться потом почему не работает.
Отлов ошибок и отладка кода VBA

Вы сами начали нести чушь, говоря, что в статье ничего не написано кроме GetObject. Я Вам привел выдержку из статьи, где расписано что и как надо заменить. И вместо того, чтобы сказать - я не знаю, что такое F8 и где жать, Вы что ответили?
Цитата
zavhoz1984 написал:
Таки я об этом и пишу с самого начала, что нихрена он местных констант не знает. Я и этот кусок раз пять прочитал и НИ-ЧЕ-ГО не понял. Тулс-референсес в аутлуке нету. А про это связывание, вы ж там не намекнули и не привели пример КАК их заменить числами...
Вот как сами вопросы задаете - такие ответы и получаете. В статье все написано. Вы пишите, что не написано в статье как заменить. А там это написано. Только вот формат статьи не тот, чтобы расписывать что такое каждая клавиша. Мы тут Ваш уровень не знаем, и если Вы не умеете отладку кода производить - так и пишите, что непонятно вот именно это.

Цитата
zavhoz1984 написал:
а то вдруг еще кто-нибудь столкнется с "профессионалами" и нихрена не поймет
Ну я тогда устранюсь из Ваших тем, раз мои ответы не устраивают и нихрена не понятны. Удачи!
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал: Ну я тогда устранюсь из Ваших тем
Ну, вот, такого помощника лишились. (см. подпись)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
The_Prist написал:
Ну я тогда устранюсь из Ваших тем, раз мои ответы не устраивают и нихрена не понятны. Удачи!
Охренительный ответ от МОДЕРАТОРА!!!

Модератор сказал: ну я пшел чо... плохие вы... нетруёвые...
 
Цитата
The_Prist написал:
И вместо того, чтобы сказать - я не знаю, что такое F8 и где жать, Вы что ответили?
Я ж сказал, я про то, что такое макрос узнал месяц тому назад. Меня никто не учил, сам быдлокодю.
Страницы: 1 2 След.
Читают тему
Наверх