有效地将文本从Excel复制到Word,超链接(如果适用)

时间:2016-04-18 17:29:30

标签: excel vba excel-vba hyperlink outlook

我正在尝试做什么
我正在尝试将不同Excel单元格的内容复制到各自的Word书签中。然后,这个填写的Word文档将粘贴到Outlook电子邮件中。如果单元格中有URL,我希望它是电子邮件中的可点击超链接。

问题
如果单元格的值是一个URL,那么当它在发送电子邮件之前没有超链接时,它会在收到电子邮件时显示为超链接(对某些人而言)。但是,其他用户看到看起来像可点击链接(蓝色和下划线),但无法点击,因为它实际上没有超链接。我的猜测是,某些邮件程序识别URL并自动超链接,而其他邮件程序则不会。

我尝试了什么
我认为解决方案是确保在发送之前URL已被超链接。我尝试了几种形式的.PasteSpecial.PasteAndFormat,其中的URL已在Excel中进行了超链接。我很接近,但要么得到了不必要的回车或没有超链接。我的最新尝试是2行黑客:

'put the cell contents in (sans formatting)
   BKMRange.Text = ActiveCell.Value

'If it looks like a hyperlink, then hyperlink it
   If UCase(Left(ActiveCell.Value, 4)) = "HTTP" Or UCase(Left(ActiveCell.Value, 4)) = "WWW." Then TempEmailDoc.Hyperlinks.Add BKMRange, ActiveCell.Value

问题在于,如果单元格不仅仅是一个URL(例如“这是您的URL:www.google.com”),则URL不会被超链接,因为前4个字符不是“ HTTP“或”WWW。“。我可以对“HTTP”或“WWW”进行更强大的搜索,但随后代码变得更加复杂。必须有一种更有效的方式。

我的问题
我如何有效地复制单元格内容,但如果单元格包含超链接,则保留超链接?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用单元格的超链接集合来了解单元格是否包含超链接:

Sub test()
    Dim i
    i = Selection.Hyperlinks.Count
    If (i > 0) Then MsgBox Selection.Hyperlinks(1).Address
End Sub

现在您知道某个单元格是(包含)超链接,您可以将其作为Outlook中的超链接插入。我假设您使用Outlook VBA并在Outlook VBA中打开工作表。

请注意,当您在Excel中输入正确的URL时,它会自动将其转换为超链接。