Заменить специальные символы в имени файла при сохранении вложения - PullRequest
0 голосов
/ 03 декабря 2018

Я создал скрипт для автоматического сохранения вложений и их распечатки.

Sub SaveAttachment(Item As MailItem)
    If Item.Class = olMail Then
        If Item.Attachments.Count > 0 Then
            Dim objAtt As Outlook.Attachments
            Set objAtt = Item.Attachments
            For Each objAttach In objAtt
                objAttach.SaveAsFile "C:\PDFInvoices\" & _
                        Item.Subject & "_" & objAttach.FileName '
            Next
            Set objAtt = Nothing
        End If
    End If
End Sub

Вложение, содержащее специальные символы, такие как # или &, приводит к сбою скрипта.

Iхочу заменить специальные символы чем-то другим.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Мне удалось решить проблему, используя следующий код:

Public Sub saveAttachtoDiskRule(itm As Outlook.MailItem)
Dim strSubject As String, strExt As String
Dim objAtt As Outlook.Attachment
Dim saveFolder As String

Dim enviro As String
enviro = CStr(Environ("ngallouj"))
saveFolder = enviro & "C:\PDFInvoices\"

For Each objAtt In itm.Attachments
DateFormat = Format(Date, "yyyy-mm-dd ")

file = saveFolder & DateFormat & objAtt.DisplayName
 objAtt.SaveAsFile file
 Next

 Set objAtt = Nothing
 End Sub
0 голосов
/ 03 декабря 2018

Я недавно создал функцию, которая удаляет все гласные из строки .. Возможно, это вам подходит

Function REMOVEVOWELS(Txt) As String
'Removes all vowels from the Txt argument
Vowels = Array("A", "E", "I", "O", "U") 'Replace vowels with special chars

For Each a In Vowels
    Txt = Replace(Txt, a, "")
Next a
REMOVEVOWELS = Txt
 End Function

Тогда вы можете попробовать установить имя файла в вашем Sub

FileNameNoSpecChars = REMOVEVOWELS(objAttach.FileName)

Затем сохраните файл с новой переменной

        For Each objAttach In objAtt
            objAttach.SaveAsFile "C:\PDFInvoices\" & _
                    Item.Subject & "_" & FileNameNoSpecChars  '
        Next

Надеюсь, это поможет.

...