如何使用.HTMLBody超链接单元格值?

问题描述 投票:0回答:1

我有一个应用程序,其中有一个用作审批工作流程表单的 Excel 工作簿。随着工作流程的进展,表单会向工作流程中的下一个人发送电子邮件。这些表单位于 SharePoint 库中,用户可以在其中签入/签出表单。我想在电子邮件中包含工作簿的链接,以节省用户的时间。另外,工作簿需要在桌面版本的 Excel 中打开,因为有些宏无法在在线版本中运行。

我在 VBA 中有电子邮件功能,我从单元格中提取收件人和正文消息。我将工作簿的链接放在正文消息单元格中。我使用 Excel 公式获取单元格中工作簿的完整链接。

我无法解释原因,但是当我单击电子邮件中的链接时,它将打开工作簿,但是当我单击查看 Excel 时,它给我一个错误,无法查看并已读取仅有的。如果我将完全相同的文本复制并粘贴到浏览器中而不是单击超链接,一切都会像我预期的那样工作。

额外的挫败感是,将“?web=1”附加到 URL 可以工作并在网络版本中打开,可以在桌面应用程序中打开它,但我不喜欢这个解决方案,因为它太大了。尝试附加“?web=0”具有与之前相同的结果,其中文件无法检出并且是只读的。叹息。

我希望用户能够单击链接。因此,我正在尝试一种不同的方法,并尝试使用 HTML 从包含 URL 的单元格值创建超链接。我很难使用 .HTMLBody 作为超链接获取单元格值。

.HTMLBody = ActiveWorkbook.Worksheets("my sheet").Range("A1")

此 ^ 仅返回纯文本,没有任何超链接功能,因此用户需要将其粘贴到浏览器中。

这是我生成电子邮件的代码以及我正在尝试的 .HTMLBody - 代码主要来自https://www.excelmojo.com/vba-send-email-from-excel/

    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim strbody As String
    Dim fpath As String
    

    ' Create a new instance of Outlook
    Set OutlookApp = CreateObject("Outlook.Application")

    ' Create a new email
    Set OutlookMail = OutlookApp.CreateItem(0)

    ' Set the properties of the email
    With OutlookMail
        '.BodyFormat = olFormatHTML
        .To = ActiveWorkbook.Worksheets("mysheet").Range("A2")
        .CC = ""
        .BCC = ""
        .Subject = ActiveWorkbook.Worksheets("mysheet").Range("A3")
        .HTMLBody = < a href="ActiveWorkbook.Worksheets("mysheet").Range("A1").Value>Help</a>
        .Display ' Use .Send instead of .Display to send the email without displaying it
    End With

    ' Clean up
    Set OutlookMail = Nothing
    Set OutlookApp = Nothing

长话短说,我正在寻求有关 .HTMLBody 语法的帮助,以包含单元格值中的链接。谢谢你

html excel vba sharepoint outlook
1个回答
0
投票

只需确保您正确传递带有链接的单元格内容:

With OutlookMail
    '.BodyFormat = olFormatHTML
    .To = ActiveWorkbook.Worksheets("mysheet").Range("A2")
    .CC = ""
    .BCC = ""
    .Subject = ActiveWorkbook.Worksheets("mysheet").Range("A3")
    .HTMLBody = "<a href=" & ActiveWorkbook.Worksheets("mysheet").Range("A1").Value & ">Help</a>"
    .Display ' Use .Send instead of .Display to send the email without displaying it
End With

顺便说一下,你真的应该在代码中使用 WITH 语句

© www.soinside.com 2019 - 2024. All rights reserved.