2016-12-14 73 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 」。

是否有一種方法可以刪除主題行中的任何文本,以便主題行只讀取「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