Сохранение нескольких вложенных файлов в почте в разные папки на основе расширения с помощью Outlook VBA

#vba #outlook

#vba #outlook

Вопрос:

У меня есть процесс, при котором пользователь заполняет форму Excel и «отправляет» ее по электронной почте.

Я написал код VBA таким образом, чтобы электронное письмо создавалось и отправлялось с двумя вложениями, файлом xlsm и xml.

Когда «отправка» получена по электронной почте, правило запускает скрипт для сохранения этих данных. Я хочу сохранить одно вложение в одну папку и одно вложение в другую. Это означает, что у меня есть все мои XML-файлы в одном месте, чтобы забрать их позже, и я сохранил исходные файлы Xlsm.

 Public Sub saveAttachtoDisk(itm As Outlook.MailItem)

Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim dateFormat

dateFormat = Format(itm.ReceivedTime, "mm-dd H-mm-ss")
saveFolder = "c:Automated Quality ProceduresExcel FormsRecieved Files"
saveFolder2 = "c:Automated Quality ProceduresExcel FormsRecieved FilesXML Files"

For Each objAtt In itm.Attachments

    If InStr(objAtt.DisplayName, ".xlsm") Then
        objAtt.SaveAsFile saveFolder amp; "" amp; dateFormat amp; objAtt.DisplayName

    ElseIf InStr(objAtt.DisplayName, ".XML") Then
        objAtt.SaveAsFile saveFolder2 amp; "" amp; dateFormat amp; objAtt.DisplayName amp; ".XML"

    End If

    Set objAtt = Nothing

Next
End Sub
  

К сожалению, этот код сохраняет оба файла в «Папке сохранения» и ничего в «Папке СохрАнения1».

Комментарии:

1. Вы уверены, что расширение действительно XML, а не xml (в нижнем регистре)?

2. расширение .xml, хотя это не должно иметь значения?

Ответ №1:

Функция InStr чувствительна к регистру, поэтому, если расширение «xml» (в нижнем регистре), InStr(objAtt.DisplayName, ".XML") вернет false для верхнего регистра.

Либо используйте нижний регистр ( InStr(objAtt.DisplayName, ".xml") ), либо попросите InsStr использовать сравнение без учета регистра: http://msdn.microsoft.com/en-us/library/wybb344c (v= против 84).aspx

Комментарии:

1. H,, Я пробовал это, но, похоже, это не имеет значения, я изменил его на это: