Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Копирование вложений определенной папки в OUTLOOK, Задача: нужно макросом скопировать вложения опеределенной папки
 

Дмитрий спасибо

Прикладываю макрос вдруг кому пригодиться. Логика была правильная, только нужно развернуть вложенные папки

Код
'---------------------------------------------------------------------------------------
Sub SaveAttachedItemsFromOutlook()
    Dim objOutlApp As Object, oNSpace As Object, oIncoming As Object
    Dim oIncMails As Object, oMail As Object, oAtch As Object
    Dim IsNotAppRun As Boolean
    Dim sFolder As String, s As String
    Dim fld As Folder
    Const nameFolder = "test"
 
    
    
    'диалог запроса выбора папки с файлами
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    'отключаем обновление экрана, чтобы наши действия не мелькали
    Application.ScreenUpdating = False
    
    'подключаемся к Outlook
    On Error Resume Next
    Set objOutlApp = GetObject(, "outlook.Application")
    If objOutlApp Is Nothing Then
        Set objOutlApp = CreateObject("outlook.Application")
        IsNotAppRun = True
    End If
    'получаем доступ к папкам почты
    Set oNSpace = objOutlApp.GetNamespace("MAPI")
    
      'подключаемся к папке Входящие, почтового ящика по умолчанию
      
    Set oIncoming = oNSpace.GetDefaultFolder(6).Folders(nameFolder)
    
    'Удаленные ==> GetDefaultFolder(3)
    'Исходящие ==> GetDefaultFolder(4)
    'Отправленные ==> GetDefaultFolder(5)
    'Входящие ==> GetDefaultFolder(6)
    
    'получаем коллекцию писем Входящие(включая подпапки)
    Set oIncMails = oIncoming.Items
    'просматриваем каждое письмо
   For Each oMail In oIncMails
       'просматриваем каждое вложение письма
      For Each oAtch In oMail.Attachments
           'отбираем только файлы Excel
           If oAtch Like "*.pdf*" Then
               s = GetAtchName(sFolder & oAtch)
             oAtch.SaveAsFile s
           End If
       Next
   Next    'Если приложение Outlook было открыта кодом - закрываем
    If IsNotAppRun Then
        objOutlApp.Quit
    End If
    'очищаем переменные
    Set oIncMails = Nothing
    Set oIncoming = Nothing
    Set oNSpace = Nothing
    Set objOutlApp = Nothing
    'возвращаем ранее отключенное обновление экрана
    Application.ScreenUpdating = True
End Sub
'---------------------------------------------------------------------------------------
' Procedure : GetShName
' Purpose   : Функция получения уникального имени файла
'             если файл с именем s уже есть - добавляет номер в скобках
'---------------------------------------------------------------------------------------
Function GetAtchName(ByVal s As String)
    Dim s1 As String, s2 As String, sEx As String
    Dim lu As Long, lp As Long
    
    s1 = s
    lp = InStrRev(s, ".", -1, 1)
    If lp Then
        sEx = Mid(s, lp)
        s1 = Mid(s, 1, lp - 1)
    End If
    s2 = s
    lu = 0
    Do While (Dir(s2, 16) <> "")
        lu = lu + 1
        s2 = s1 & "(" & lu & ")" & sEx
    Loop
    GetAtchName = s2
End Function

Копирование вложений определенной папки в OUTLOOK, Задача: нужно макросом скопировать вложения опеределенной папки
 
Михаил Лебедев спасибо посмотрю.

Дмитрий спасибо за ваш макрос , а можно добавить в ваш макрос уточнение в какой папке перебирать?
К сожалению макрорекодера у outlook нет , посему не знаю как прописать конкретную папку. Можете подсказать? Интуитивно хочется приделать к вашему маросу
Код
 Set oIncoming = oNSpace.GetDefaultFolder.name ="Test"
    'Удаленные ==> GetDefaultFolder(3)
    'Исходящие ==> GetDefaultFolder(4)
    'Отправленные ==> GetDefaultFolder(5)
    'Входящие ==> GetDefaultFolder(6)     
Копирование вложений определенной папки в OUTLOOK, Задача: нужно макросом скопировать вложения опеределенной папки
 
Подскажите, а можно сохранять файлв не через функцию а служебным словом? И каким? Хочу заменить saveAttachtoDisk oMail, на что то другое.

Попробовала объявить функцию, не помогло.
Копирование вложений определенной папки в OUTLOOK, Задача: нужно макросом скопировать вложения опеределенной папки
 
Михаил Лебедев, Nordheim, спасибо за пояснение. Поробую объявить функцию.
Копирование вложений определенной папки в OUTLOOK, Задача: нужно макросом скопировать вложения опеределенной папки
 
Nordheim, можете подсказать почему макрос ругается на функцию?


"Sub or Function not defined"
Изменено: Alina Exsel - 28.11.2018 10:17:51
Копирование вложений определенной папки в OUTLOOK, Задача: нужно макросом скопировать вложения опеределенной папки
 
Добрый день, жители планеты Excel.

Прошу помочь понять и применить макрос который приложила к теме. Макрос не мой , поэтому каких либо комментариев дать не смогу ибо только учусь пользоваться макросами.

Если уже есть подобная тема просьба перенести в нужную папку.

При запуске макроса ругается на фунцию, подскажите зачем нужна фукция saveAttachtoDisk? И как поправить макрос чтобы он при запуске обрабатывал опеределенную папку?
Код
For xx = 1 To oIncMails.Folders.Count
            If oIncMails.Folders(xx).Name = "с работы файлы." Then
                      ' здесь уже перебираем все письма этой папки
                For Each oMail In oIncMails.Folders(xx).Items
                      'вызываем приведенную Вами функцию
                      saveAttachtoDisk oMail
                Next
            End If
        Next

 
Копирование\перемещение файлов по списку
 
Nordheim спасибо за помощь разобралась.

Я отправляю письма через outlook.

У меня были проблемы с путями, в коде который указан здесь изначально. & .doc. сделал свое дело. Все работает. Спасибо.
Копирование\перемещение файлов по списку
 
Nordheim спасибо за помощь


Я кодом и отправляю письма, с этим все ок. Даже сделала кнопочку для рассылки.


Я не понимаю код который вы дали, его логику.

То что я поняла
1. выбирает папку с файлами
2. в папке с макросом ищет названия файлов

а дальше не понимаю  
Копирование\перемещение файлов по списку
 
Nordheim

ОШибку выдавал в моей файле, в вашем все -ок.

Только не понимаю куда он сохраняет файлы? По циклу идет, вижу перебор файлов а найти куда сохряет не могу.  
Копирование\перемещение файлов по списку
 
Nordheim

Выдает ошибку 424.  
Копирование\перемещение файлов по списку
 
Nordheim,


1. хочу выбрать файлы, а потом разослать их от имени этого сотрудника. Эта часть у меня работает))))

Вложила файлы
Копирование\перемещение файлов по списку
 
Nordheim

1. Да макрос и список файлов которые нужно скопировать в одном файле
2. Да одно и тоже название
3. Есть порядка 1000 файлов из которых нужно выбрать только те файлы котрые есть в списке ( совпадение имен можно сделать полным или частичным)  
Копирование\перемещение файлов по списку
 
Всем привет, скопировала макрос. Но к сожалению ничего не копирует. Макрос "ходит","думает" но ничего не копирует.
Прошла по шагово F8 все работает.
У меня вопрос как нужно назвать/ и где лежать эксель файл в котором указан список файлов которые нужно скопировать /перенести.
Думаю в этом дело, я назвала "список" и положила в папку из которого переносят файлы.  
Изменено: Alina Exsel - 16.08.2018 13:27:15
Отправить все pdf файлы из определённой папки одним письмом через Outlook
 
Попробуйте, рассылка идет из xls
Код
Создаем сообщение из шаблона
        On Error GoTo Template_Is_Missing
        Set OutMail = OutApp.CreateItemFromTemplate(Cells(i, 3))
        On Error GoTo 0
        On Error Resume Next
        
        OutMail.To = Cells(i, 1)
        OutMail.Subject = Cells(i, 2)
    
        'Поиск вложений к письму
        If Cells(i, 4) <> "" Then
            If FSO.FolderExists(Cells(i, 4)) = True Then    'Папка
                'Проверяем файлы в папке
                Set SourceFolder = FSO.getfolder(Cells(i, 4))
                FilesExist = False
                For Each FileItem In SourceFolder.Files
                    FilesExist = True
                    OutMail.Attachments.Add FileItem.Path
                Next FileItem[/P]
                Set FileItem = Nothing
                Set SourceFolder = Nothing
                'Проверяем было ли хоть одно вложение
                If FilesExist = False Then
                    Cells(i, 5) = "Отсутствуют файлы в папке"
                Else
                    Cells(i, 5) = ""
                End If
            Else
                If FSO.FileExists(Cells(i, 4)) = True Then  'Файл
                    MyPath = Cells(i, 4)
                    OutMail.Attachments.Add MyPath
                    Cells(i, 5) = ""
Изменено: Alina Exsel - 12.03.2019 11:05:20 (dd)
Сохранение вложений из определенной папки почты Outlook на диск, подправить код
 
Всем добрый день, подскажите плииз куда и что добавить  в ниже прикрепленный макрос чтобы он брал только заданный период и ходил по подпапкам входящие. Сечас собирает только по папке входящие. Заранее спасибо.
Код
Sub SaveAttachedItemsFromOutlook()
    Dim objOutlApp As Object, oNSpace As Object, oIncoming As Object
    Dim oIncMails As Object, oMail As Object, oAtch As Object
    Dim IsNotAppRun As Boolean
    Dim sFolder As String, s As String
    'диалог запроса выбора папки с файлами
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    'отключаем обновление экрана, чтобы наши действия не мелькали
    Application.ScreenUpdating = False
    
    'подключаемся к Outlook
    On Error Resume Next
    Set objOutlApp = GetObject(, "outlook.Application")
    If objOutlApp Is Nothing Then
        Set objOutlApp = CreateObject("outlook.Application")
        IsNotAppRun = True
    End If
    'получаем доступ к папкам почты
    Set oNSpace = objOutlApp.GetNamespace("MAPI")
    'подключаемся к папке Входящие, почтового ящика по умолчанию
    Set oIncoming = oNSpace.GetDefaultFolder(6)
    'Удаленные ==> GetDefaultFolder(3)
    'Исходящие ==> GetDefaultFolder(4)
    'Отправленные ==> GetDefaultFolder(5)
    'Входящие ==> GetDefaultFolder(6)
    
    'получаем коллекцию писем Входящие(включая подпапки)
    Set oIncMails = oIncoming.Items
    'просматриваем каждое письмо
    For Each oMail In oIncMails
        'просматриваем каждое вложение письма
        For Each oAtch In oMail.Attachments
            'отбираем только файлы Excel
            If oAtch Like "*.xl*" Then
                s = GetAtchName(sFolder & oAtch)
               oAtch.SaveAsFile s
            End If
        Next
    Next
    'Если приложение Outlook было открыта кодом - закрываем
    If IsNotAppRun Then
        objOutlApp.Quit
    End If
    'очищаем переменные
    Set oIncMails = Nothing
    Set oIncoming = Nothing
    Set oNSpace = Nothing
    Set objOutlApp = Nothing
    'возвращаем ранее отключенное обновление экрана
    Application.ScreenUpdating = True
End Sub
'---------------------------------------------------------------------------------------
' Procedure : GetAtchName
' Purpose   : Функция получения уникального имени файла
'             если файл с именем s уже есть - добавляет номер в скобках
'---------------------------------------------------------------------------------------
Function GetAtchName(ByVal s As String)
    Dim s1 As String, s2 As String, sEx As String
    Dim lu As Long, lp As Long
    
    s1 = s
    lp = InStrRev(s, ".", -1, 1)
    If lp Then
        sEx = Mid(s, lp)
        s1 = Mid(s, 1, lp - 1)
    End If
    s2 = s
    lu = 0
    Do While (Dir(s2, 16) <> "")
        lu = lu + 1
        s2 = s1 & "(" & lu & ")" & sEx
    Loop
    GetAtchName = s2
End Function
Изменено: Alina Exsel - 31.05.2018 10:23:18 (привет)
Страницы: 1
Наверх