Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2012, 10:15   #1
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
По умолчанию Save_Attachments

Доброго времени суток!
из-за отсутствия специализированного раздела пишу тут.

Прошу Вашей помощи в решении следующей задачи.
Тема многократно обсасывалась в интернете, НО честно потратив несколько часов на поиски, доведенного до ума рецепта я не нашел (или работает не так, или не работает вовсе или исполнение задачи в виде платного модуля).

задача: мне необходимо, что бы Outlook при новом входящем письме сохранял вложенный в письмо файл на жестком диске ПК.
используя
Цитата:
.. As Outlook.MailItem
удалось упростить код до нескольких строк, т.к. с помощью этого метода макрос можно завязать через сценарии со штатными "правилами обработки почты" самого Outlook (идея найдена в интернете, источников так много, что определить автора мне не удалось, но идея отличная).

итак, проблема по большому счету в моей неграмотности относительно VBA.
Указанный макрос отлично работает, НО немножко не так как хотелось.
Макрос ниже действительно сохраняет вложение входящего письма в указанную в макросе папку, НО
имя которое присваивается сохраняемому файлу = оригинальное имя_оригинальное расширение_системная дата(макрос)_расширение файла(макрос).

как из этой цепочки убрать оригинально расширение? не очень красиво получается, например:
прайс.xls 10.02.2012.xls
Задача то по большому счету просто добавить дату перед оригинальным расширением файла.

и еще такой вопрос, жестко перечислить расширения файлов которые нужно сохранять?
дело в том, что макрос сохраняет все вложенные данные, вплоть до картинок из подписи (многие компании добавляют в подпись сотрудника логотип компании в виде картинки).

заранее спасибо тем кто откликнется.



Код:
Sub Save_Attachments(myItem As Outlook.MailItem)
Dim att_count As Integer
Dim day As Date
day = Format(Now(), "dd mmmm yyyy")
For att_count = 1 To myItem.Attachments.Count
myItem.Attachments.Item(att_count).SaveAsFile ("C:\TEST\" & myItem.Attachments.Item(att_count).DisplayName & " " & day & ".csv")
Next
End Sub
Exo вне форума Ответить с цитированием
Старый 10.02.2012, 11:26   #2
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

Код:
Sub Save_Attachments(myItem As Outlook.MailItem)
    Dim sD As String
    sD = Format(Now(), " dd mmmm yyyy")    ' пробел впереди!

    Dim att As Attachment
    For Each att In myItem.Attachments
        Dim s As String
        s = att.Filename

        Dim pd As Integer
        pd = InStrRev(s, ".")

        Dim n As String, w As String
        n = Left(s, pd - 1)
        w = Right(s, Len(s) - pd)
        If InStr(1, "xls_doc_txt_img_", w) > 0 Then _
           att.SaveAsFile "C:\TEST\" & n & sD & "." & w
    Next att
End Sub
аналитика вне форума Ответить с цитированием
Старый 10.02.2012, 12:58   #3
Exo
Форумчанин
 
Аватар для Exo
 
Регистрация: 25.09.2007
Сообщений: 102
По умолчанию

it's brilliant!!!
аналитика, большое человеческое спасибо!
Exo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц