2016-05-04 5 views
0

Это то, что я до сих пор:Перспективы VBA, чтобы сохранить несколько вложений в различные имена

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 
saveFolder = "P:\ME\TEST\" 
Dim dateFormat 
dateFormat = Format(Now, "yyyy.mm.dd") 
For Each objAtt In itm.Attachments 
     If InStr(objAtt.FileName, "ASDFA ADSF.pdf", vbTextCompare) > 0 Then 
     objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ASDF.pdf" 
     ElseIf InStr(objAtt.FileName, "GASD.pdf", vbTextCompare) > 0 Then 
     objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ADSF ADD.pdf" 
     ElseIf InStr(objAtt.FileName, "ASDF AD.pdf", vbTextCompare) > 0 Then 
     objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ASDF.pdf" 
     ElseIf InStr(objAtt.FileName, "ASDF AS.pdf", vbTextCompare) > 0 Then 
     objAtt.SaveAsFile saveFolder & dateFormat & " asd asdf.pdf" 
     Else 
     objAtt.SaveAsFile saveFolder & "Caught" 
    End If 
    Set objAtt = Nothing 
Next 
End Sub 

Я использовал случайные буквы только для личной жизни. Я пытаюсь получить Outlook для автосохранения вложений электронной почты в качестве конкретных имен с датой перед использованием правил и VBA. Что я здесь делаю неправильно?

+0

Какой результат вы получаете? Вы получаете сообщение об ошибке или не отображаются правильно? – GibralterTop

+0

Ничего не происходит. Ничего не спасено вообще. Правило работает и маркирует сообщение как прочитанное. Если это помогает, это правило относится к моему имени, поэтому я просто пересылаю электронные письма себе, а затем позволяю ему запускать, чтобы увидеть, сохраняет ли он вложения. Он запускает сценарий, который находится в проекте 1 в VBA. Сценарий находится в модуле 2 (удаленный модуль 1, поэтому я думаю, поэтому его 2). –

ответ

0

Мое предположение, что у вас нет разрешения на запись в P:\ME\TEST\ или вы не попадаете в свои If заявления для сохранения.

Вы хотите установить свои If линии, чтобы быть > 0:

If InStr(objAtt.DisplayName, "BBB AAA.pdf") > 0 Then 

Если какой-либо символ в первой позиции, кроме этого имени, то он не будет идти внутри If. Конечно, это может быть и поведение, которое вы хотите.

Вы можете проверить, если он не попав внутрь If statments, добавив:

Else 
    objAtt.SaveAsFile saveFolder & "not caught.pdf" 
End If 

Если вы не получите сохранить после добавления Else кода, попытайтесь сохранить в папку локальных документов. Тогда, если вы все равно не получите никаких сейвов, у MailItem нет вложений.

EDIT: Должно выглядеть так:

VBA Editor

+0

У меня есть разрешение, и я попробовал> 0 и поставил тест, чтобы увидеть, не ударил ли он и ничего не сохранилось. Какие-либо предложения? Я больше не знаю, как это попасть. Это правило только для клиента, и я пытаюсь сохранить сервер, если это может помочь. –

+0

Установили ли вы точку прерывания в цикле 'Для каждого', чтобы узнать, идет ли она в' 'Для каждого'? – GibralterTop

+0

Как мне это сделать? Я буквально совершенно новый для VBA, поэтому я очень ценю помощь! –