#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,, Я пробовал это, но, похоже, это не имеет значения, я изменил его на это: