【问题标题】:Editing hyperlink to remove file name from path编辑超链接以从路径中删除文件名
【发布时间】:2020-06-24 18:18:05
【问题描述】:

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

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

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

Sub HyperLinkChange()
    Dim objDoc As Object
    Dim tmpLink As Object
    On Error Resume Next
    If ActiveInspector.EditorType = olEditorWord Then
        ' use WordEditor Inspector
        Set objDoc = ActiveInspector.WordEditor
        For Each tmpLink In objDoc.Hyperlinks
            tmpLink.Address = "test123"
        Next tmpLink
    End If
End Sub

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!这很好用,非常感谢您的帮助。我现在唯一的问题是宏仅在活动电子邮件回复位于弹出窗口中时才有效?如果我只是点击回复并尝试运行它是行不通的。
    • 是的,因为您使用的是ActiveInspector...您能说得更清楚一点,您确实想使用open 电子邮件吗?点击回复时什么不起作用?
    • 嗨,是的,希望它与当前正在阅读的电子邮件一起使用。因此,如果有人向我的 Outlook 发送一封电子邮件,其中包含我想在其上运行此宏的链接,然后我单击回复以使该电子邮件“处于活动状态”并运行宏,则不会发生任何事情。如果我然后只需单击“弹出”以使电子邮件显示在其自己的窗口中并再次运行它就可以正常工作。
    • 或者如果它可以使这项工作而不必点击回复更好。
    • 要使用当前正在阅读的电子邮件,您需要使用ActiveInspector,而不是ActiveExplorer,例如看着ActiveExplorer.Selection.Item(1)。使用这种方法,您必须修改ItemBodyHTMLBody,首先确保它是MailItem。查找和修改超链接是可行的,但几乎是完全不同的问题/方法。遗憾的是,使用WordEditor 并不方便。
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2017-07-10
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2019-08-18
    • 2014-03-16
    相关资源
    最近更新 更多