Vba 编辑超链接以从路径中删除文件名

Vba 编辑超链接以从路径中删除文件名,vba,outlook,Vba,Outlook,我正在尝试更改打开的Outlook电子邮件中的超链接,以从路径中删除文件名。例如,我希望:\test\folder1\file.txt成为:\test\folder1 我们使用SharePoint Online存储文件,通常希望打开文件位置。修改链接可以实现这一点(我们将SharePoint映射为网络共享) 此代码更改整个超链接。我想我需要在最后一个反斜杠后丢弃所有内容 子超链接更改() 作为对象的Dim objDoc 将tmpLink设置为对象 出错时继续下一步 如果ActiveInspect

我正在尝试更改打开的Outlook电子邮件中的超链接,以从路径中删除文件名。例如,我希望:\test\folder1\file.txt成为:\test\folder1

我们使用SharePoint Online存储文件,通常希望打开文件位置。修改链接可以实现这一点(我们将SharePoint映射为网络共享)

此代码更改整个超链接。我想我需要在最后一个反斜杠后丢弃所有内容

子超链接更改()
作为对象的Dim objDoc
将tmpLink设置为对象
出错时继续下一步
如果ActiveInspector.EditorType=olEditorWord,则
'使用WordEditor检查器
设置objDoc=ActiveInspector.WordEditor
对于objDoc.Hyperlinks中的每个tmpLink
tmpLink.Address=“test123”
下一个tmpLink
如果结束
端接头

您可以使用
InStrRev
搜索从末尾开始的反斜杠,并使用
Left
函数截断字符串。有关更多详细信息,请参见和

添加附加变量
Dim pos as Long
后,使用
pos=InStrRev(tmpLink.Address,“\”,vbTextCompare)
查找最后一个反斜杠的位置。这是从地址文本的开头开始的位置,而不是结尾。在示例地址
A:\test\folder1\file.txt
中,最后一个反斜杠的位置是16


然后
tmpLink.Address=Left(tmpLink.Address,pos-1)
返回反斜杠左侧的所有内容。

谢谢!这非常有效,非常感谢您的帮助。我现在唯一的问题是,只有当活动电子邮件回复在弹出窗口中时,宏才能工作?如果我只是单击“回复”并尝试运行它,它将不起作用。是的,因为您正在使用
ActiveInspector
。。。你能说得更清楚一点,你真的想用一封公开的电子邮件吗?当您单击“回复”时,什么不起作用?您好,是。我希望它能与正在阅读的当前电子邮件一起工作。因此,如果有人向我的Outlook发送一封电子邮件,其中包含我要运行此宏的链接,然后我单击“回复”使该电子邮件处于“活动”状态并运行宏,则不会发生任何事情。如果我只需单击“弹出”即可在自己的窗口中显示电子邮件,然后再次运行,则效果良好。或者,如果可以在不必单击“回复”的情况下更好地执行此操作。要处理正在阅读的当前电子邮件,而不是使用
ActiveInspector
,则需要使用
ActiveExplorer
,例如,查看
ActiveExplorer.Selection.Item(1)
。使用这种方法,您必须修改
项目
正文
HTMLBody
,首先确保它是
邮件项目
。查找和修改超链接是可行的,但几乎是一个完全不同的问题/方法。遗憾的是,使用
WordEditor
并不方便。