2016-12-14 3 views
0

В настоящее время я использую макрос в Outlook, который принимает имя вложения и использует его как тему.Удаление части текста с помощью VBA (Outlook 2010)

Макрос является:

Sub AttachmentNameAsSubject() 

Dim AttachmentName As String 
Dim currItem As Object 

Set currItem = ActiveInspector.CurrentItem 

With currItem 
    If .Attachments.Count > 0 Then 
     AttachmentName = .Attachments.Item(1).DisplayName 
     .Subject = AttachmentName 
    End If 

End With 
End Sub 

Приставка, как правило, своего рода .pdf или файл .xls, так что если вложение: «MyAttachment.pdf», сюжетная линия будет читать «MyAttachment.pdf ».

Есть ли способ удалить любой текст после периода в строке темы, чтобы строка Subject просто читала «MyAttachment» и не включает в себя «.pdf» или как бы то ни было расширение.

+1

Вам использовать левые функции: Left (.Attachments.Item (1) .DisplayName, Len (.Attachments.Item (1) .DisplayName) - 4) – Sorceri

+1

, если расширение может быть более 4-х символов то вы можете использовать InStr для получения местоположения периода: Left (.Attachments.Item (1) .DisplayName, InStr (1, .Attachments.Item (1) .DisplayName, ".") - 1) – Sorceri

+0

Это просто зависит на расширение. В большинстве случаев я чувствую, что расширение составляет 4 символа (включая период, например «.pdf»). Иногда это может быть 5-7 символов. – Darren

ответ

1

Возможно, это проще (сбрасывает что-либо из последнего периода).

Function DropExtension(sName As String) As String 
    If InStr(1, sName, ".", vbTextCompare) = 0 Then 
     DropExtension = sName ' No file extension 
    Else 
     DropExtension = Left(sName, InStrRev(sName, ".") - 1) 
    End If 
End Function 
+0

Мне любопытно, если бы я хотел переместить эту существующую функциональность, но и теперь добавить имя вложения в тело письма, как бы я это сделал? – Darren

+0

Вы можете использовать '.Body' или' .HTMLBody', если это почтовый элемент. Большинство типов элементов имеют '.Body', с которыми вы можете манипулировать. – PatricK