Здравствуйте, у меня есть макрос, в котором загружаются все вложения из нескольких электронных писем, этот код работает нормально, но мне нужен код изменения, чтобы изменить имя каждого файла, который был загружен в папку, имя файла, например «I10001258», «I10003256», «I10004758»... Я хочу удалить первые пять букв "I10001258" для всех загружаемых файлов. Спасибо!
Option Explicit
Sub Get_Attachments()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
Dim msg As Outlook.MailItem
Dim fo As Outlook.Folder
Dim at As Outlook.Attachment
Set fo = Outlook.GetNamespace("MAPI").Folders("Your Mail Box Name Here").Folders("Inbox").Folders("My Report")
Dim lr As Integer
For Each msg In fo.Items
lr = Application.WorksheetFunction.CountA(sh.Range("A:A"))
sh.Range("A" & lr + 1).Value = msg.Subject
sh.Range("B" & lr + 1).Value = msg.Attachments.Count
For Each at In msg.Attachments
If VBA.InStr(at.Filename, ".xls") > 0 Then
at.SaveAsFile sh.Range("F1").Value & "\" & at.Filename
End If
Next
Next
MsgBox "Reports have been downloaded successfully"
End Sub


Mid() можно использовать для пропуска первых символов.
at.SaveAsFile sh.Range("F1").Value & "\" & Mid(at.Filename, 6)

@PowerCat 6 из 1 полдюжины других. Я думаю, что это проще.
Потому что на работе они отключили поиск по индексу, и я хочу сделать себя проще, используя поиск в папке, например 3256 ИЛИ 3247 ИЛИ ... Потому что теперь мне нужно всегда писать I10003256 ИЛИ I10003247 ИЛИ ... Может, у вас есть другая идея получше :)
@PowerCat Попался, это действительно зависит от предпочтений пользователя. Для согласованности рассмотрите возможность создания специальной функции для создания имени файла.
Я не могу создавать конкретные имена, потому что мне нужно печатать документы подряд с белой бумаги, где эти коды, например, 3256, 3247. Но большое спасибо, я попробую использовать функцию MID.
@PowerCat Спасибо, что приняли мой ответ!
есть еще один вопросик, как сделать чтобы в msgbox писалось сколько файлов скачано? Считать
@PowerCat MsgBox msg.Attachments.Count & " Reports have been downloaded successfully" должен это сделать.
но проблема с функцией MID, что все файлы хорошо показывают имя, которое мне нужно, но все файлы теряют свои форматы файлов:/
Давайте продолжить обсуждение в чате.
Так что этот метод лучше, чем функция =RIGHT (Text, LEN(text)-N)?