Как удалить буквы имени для загруженных файлов из почты

Здравствуйте, у меня есть макрос, в котором загружаются все вложения из нескольких электронных писем, этот код работает нормально, но мне нужен код изменения, чтобы изменить имя каждого файла, который был загружен в папку, имя файла, например «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
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Mid() можно использовать для пропуска первых символов.

 at.SaveAsFile sh.Range("F1").Value & "\" & Mid(at.Filename, 6)

Immediate Window Result

Так что этот метод лучше, чем функция =RIGHT (Text, LEN(text)-N)?

Power Cat 17.03.2022 19:50

@PowerCat 6 из 1 полдюжины других. Я думаю, что это проще.

TinMan 17.03.2022 19:53

Потому что на работе они отключили поиск по индексу, и я хочу сделать себя проще, используя поиск в папке, например 3256 ИЛИ 3247 ИЛИ ... Потому что теперь мне нужно всегда писать I10003256 ИЛИ I10003247 ИЛИ ... Может, у вас есть другая идея получше :)

Power Cat 17.03.2022 19:55

@PowerCat Попался, это действительно зависит от предпочтений пользователя. Для согласованности рассмотрите возможность создания специальной функции для создания имени файла.

TinMan 17.03.2022 19:58

Я не могу создавать конкретные имена, потому что мне нужно печатать документы подряд с белой бумаги, где эти коды, например, 3256, 3247. Но большое спасибо, я попробую использовать функцию MID.

Power Cat 17.03.2022 20:03

@PowerCat Спасибо, что приняли мой ответ!

TinMan 17.03.2022 20:06

есть еще один вопросик, как сделать чтобы в msgbox писалось сколько файлов скачано? Считать

Power Cat 17.03.2022 20:33

@PowerCat MsgBox msg.Attachments.Count & " Reports have been downloaded successfully" должен это сделать.

TinMan 17.03.2022 20:39

но проблема с функцией MID, что все файлы хорошо показывают имя, которое мне нужно, но все файлы теряют свои форматы файлов:/

Power Cat 17.03.2022 20:59

Давайте продолжить обсуждение в чате.

TinMan 17.03.2022 21:02

Другие вопросы по теме