我有一个脚本可以在Outlook中通过电子邮件创建任务 - 目前它只需要电子邮件主题并使其成为任务标题,这很好,除非我想要删除主题行的第一部分到某个点。
电子邮件主题始终相同(虽然票号不同),示例主题将是:
New Ticket: 3416 - School: School1 - Room: 158 - Desc: Broken PC
票号更改 - 但我想删除所有内容,包括“School:”
所以我们会留下这样的东西:
School1 - Room: 158 - Desc: Broken PC
我目前使用的脚本是:
Sub MakeTaskFromMail2(MyMail As Outlook.MailItem)
Dim strID As String
Dim olNS As Outlook.NameSpace
Dim olMail As Outlook.MailItem
Dim objTask As Outlook.TaskItem
strID = MyMail.EntryID
Set olNS = Application.GetNamespace("MAPI")
Set olMail = olNS.GetItemFromID(strID)
Set objTask = Application.CreateItem(olTaskItem)
With objTask
.subject = olMail.subject
.DueDate = olMail.SentOn
.Body = olMail.Body
End With
Call CopyAttachments(olMail, objTask)
objTask.Save
Set objTask = Nothing
Set olMail = Nothing
Set olNS = Nothing
End Sub
Sub CopyAttachments(objSourceItem, objTargetItem)
Set fso = CreateObject("Scripting.FileSystemObject")
Set fldTemp = fso.GetSpecialFolder(2) ' TemporaryFolder
strPath = fldTemp.Path & "\"
For Each objAtt In objSourceItem.Attachments
strFile = strPath & objAtt.FileName
objAtt.SaveAsFile strFile
objTargetItem.Attachments.Add strFile, , , objAtt.DisplayName
fso.DeleteFile strFile
Next
Set fldTemp = Nothing
Set fso = Nothing
End Sub
有关如何将其分开并删除第一部分的任何帮助都将非常有用。
我不相信这样做太难 - 但我对VB的了解非常有限。
*编辑 - 删除了vb.net,因为这里不合适。
答案 0 :(得分:3)
您可以使用Instr / Mid功能组合
Dim sInput As String
Dim sOutput As String
sInput = "New Ticket: 3416 - School: School1 - Room: 158 - Desc: Broken PC"
sOutput = Mid(sInput, InStr(sInput, "School:") + 8)
答案 1 :(得分:0)
在VB.NET中,您可以使用RegEx轻松完成此任务,如下所示:
Dim output As String = RegEx.Replace(input, "New Ticket: \d+ - School: ", "")
\d
表示任何数字,+
表示一次或多次。因此,\d+
一起表示它将匹配任何数字与一个或多个数字。
但是,在VB脚本或VBA中,您需要求助于Mid
和InStr
等字符串解析函数。