У меня есть код VBA mAttachmentSaver, который сохраняет вложения из выбранных писем.
Я хотел бы сохранить только файлы .pdf, .doc и Excel. Это делается для того, чтобы исключить различные вложения электронной почты, такие как изображения, в самой почте.
Я думал что-то вроде этого кода, который нашел в Интернете FileFilter: = "Excel,.xls;.pdf,".
Хотя не знаю, куда его вставить.
Кроме того, я хотел бы, чтобы эта строка отображала случайное предложение:
If lNum > 0 Then
MsgBox CStr(lNum) & " attachment(s) was(were) saved successfully.", vbInformation, "Message from Attachment Saver"
Else
Например:
If lNum > 0 Then
MsgBox CStr(lNum) & " attachment(s) was(were) saved successfully. Good job! :)", vbInformation, "Message from Attachment Saver"
MsgBox CStr(lNum) & " attachment(s) was(were) saved successfully. Nice work!", vbInformation, "Message from Attachment Saver"
MsgBox CStr(lNum) & " attachment(s) was(were) saved successfully. You got it!", vbInformation, "Message from Attachment Saver"
MsgBox CStr(lNum) & " attachment(s) was(were) saved successfully. Job done! Time for weekend!", vbInformation, "Message from Attachment Saver"
Else
Я забыл упомянуть, что я полный нуб в таких вещах. Тем не менее, было бы здорово решить это самостоятельно с помощью других. Я нашел это, будет ли это полезно?
Dim strQuotes(10) As String Dim lngIndex As Long strQuotes(0) = "A" strQuotes(1) = "b" strQuotes(2) = "c" strQuotes(3) = "d" strQuotes(4) = "e " strQuotes(5) = "f" strQuotes(6) = "g" strQuotes(7) = "h" strQuotes(8) = "i" strQuotes(9) = "j" strQuotes(10) = "k" lngIndex = Int((10 - 0 + 1) * Rnd + 0) MsgBox strQuotes(lngIndex) End Sub
Я думаю, что это сработает, но это трудно читать в комментариях. Попробуйте и посмотрите, работает ли это. Также взгляните на ответ Мохита Бансала.
Я пробовал разные вещи, но каждый раз, когда код становится красным, я получаю ошибки. Боюсь, я близок к тому, чтобы понятия не иметь, что я делаю, ха-ха
Я просмотрел код, и вы можете добавить условие If, чтобы отфильтровать нужные форматы среди доступных вложений для сохранения.
If strAtmtName(1) = "xlsx" Or strAtmtName(1) = "pdf" Or strAtmtName(1) = "doc" Then
Else: GoTo G:
End If
Теперь вам нужно будет определить тег Goto G также перед следующим текущим циклом for, как на изображении.
Итак, что мы делаем, так это пропускаем цикл, если расширение файла не то, что нам нужно перед сохранением вложения.
Надеюсь, поможет!
Редактировать:
Измените условие Else, чтобы уменьшить количество на 1, как показано на рисунке.
Думаю, я понимаю, что вы здесь сделали. Вы прервали «сканирование», чтобы убедиться, что это правильные файлы. Если это «истина», то мы продолжаем «g:». Я включил его в код и протестировал: он действительно пропускает тестовый файл .png и помещает только 2 файла в папку назначения. Однако теперь в отображаемом сообщении говорится, что 3 вложения были успешно сохранены, включая файлы .png.
Да Вы также должны изменить печать сообщений. Просмотрите код и попробуйте изменить место, где печатается сообщение. "lCountEachItem = lCountEachItem - 1"
Я отредактировал ответ, чтобы показать, куда добавить эту строку.
Хм, я понимаю, что вы сделали, но я думаю, что -1 будет правильным только в этом конкретном тестовом примере. Если бы я попытался сохранить вложения, например, из 120 электронных писем, 5 из которых содержат файлы .png, он напечатал бы «119 успешно сохраненных», хотя это было бы неправильно.
Нет, это было бы не так. Если вы внимательно посмотрите на код, вы обнаружите, что есть два счетчика..... один подсчитывает файлы в текущей почте, а другой подсчитывает общее количество файлов. В этом случае вы уменьшаете 1 из общего количества файлов в этом конкретном электронном письме, а не в выбранной вами группе. ---------- Итак, если вы выбрали одно электронное письмо с 5 вложениями, и одно из них в формате .pdf, вы получите сообщение о сохранении 4 файлов.
Хм, он становится красным, и я получаю сообщение об ошибке. Я думаю, что я слишком нуб, чтобы понять, что я делаю, ха-ха imgur.com/a/rC9OFgw
lCountEachItem
пишется через 1 или через L? @ЗАКОН . Также в чем ошибка?
1 (один) ---------- хахаха понял!! Спасибо :D Работает как шарм =D Не могли бы вы также подтолкнуть меня в правильном направлении с другим вопросом о рандомизированных сообщениях? Это скорее уловка, но я хотел бы узнать больше об этом софте
Сделайте это L (строчная L)
Большое спасибо, Мохит и Эразорв :) Есть ли способ дать какой-нибудь +1?
Ответ Мохита охватывал фильтрующую часть. Вот часть случайного сообщения.
Сейчас он с 4 сообщениями, как в примере, но если вы хотите расширить его, вам нужно изменить Int((4 * Rnd) + 1)
. Измените 4 на что-то большее, например 5, и тогда вы сможете получить 5 случайных сообщений. Также добавьте заявление Case
с новым сообщением.
If lNum > 0 Then
Dim Message As String
Message = CStr(lNum) & " attachment(s) was(were) saved successfully."
Select Case Int((4 * Rnd) + 1)
Case 1
Message = Message & " Good job! :)"
Case 2
Message = Message & " Nice work!"
Case 3
Message = Message & " You got it!"
Case 4
Message = Message & " Job done! Time for weekend!"
End Select
MsgBox Message, vbInformation, "Message from Attachment Saver"
Потрясающий! Большое спасибо! Я никогда не нуждался в VBA, но он выглядит довольно забавным языком для изучения, возможности кажутся безграничными. Особенно с Экселем. Спасибо еще раз!
Не за что :) Поскольку вы спрашивали, как дать своего рода +1 (в другом комментарии), вот связь, который может помочь.
Я не могу проголосовать, у меня пока нет репутации :O
Все в порядке. Просто продолжайте принимать этот ответ. :)
Для случайного заглянуть в
rnd