以编程方式将超链接添加到字符串

时间:2019-01-15 15:48:22

标签: vb.net ms-word office-interop

我正在尝试使用Word Interop在VB.NET中自动创建电子邮件签名。

除了尝试以编程方式添加超链接(例如(例如)电子邮件地址)之外,其他所有方法都可以正常工作-很好地编写电子邮件,并期望另一端的邮件客户端/浏览器可以将其转换,但是我想自行指定链接(用于社交链接,我们的隐私政策等)

以下是我正在使用的代码的相关部分:

Imports Word = Microsoft.Office.Interop.Word

Dim objWord As Word.Application = CreateObject("Word.Application")

objWord.Visible = False

Dim objDoc = objWord.Documents.Add()
Dim objSelection = objWord.Selection
Dim objEmailOptions = objWord.EmailOptions
Dim objSignatureObject = objEmailOptions.EmailSignature
Dim objSignatureEntries = objSignatureObject.EmailSignatureEntries

Try
    If Len(strEmail) > 0 Then
        objSelection.TypeText(strEmail)
    End If

Catch ex As Exception
    Debug.Print(ex.Message)
End Try

使用示例here,我相信我应该使用以下内容代替objSelection.TypeText(strEmail)是...

If Len(strEmail) > 0 Then
    Dim objEmailRange = objSelection.Range.Start()
    objSelection.Hyperlinks.Add(objEmailRange, strEmail, , , strEmail)    
End If

...但是这会引发COM异常。

A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in Signature_v2.exe
Command failed

我定义范围的起始位置是否正确(基于this)?我在做什么错了?

1 个答案:

答案 0 :(得分:1)

超链接不是实际的文字;这只是对已经存在的文字的修饰。您必须将范围,选择内容或文档传递给Hyperlinks.Add()的第一个参数(“锚点”)。

示例:

ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="http:\\www.microsoft.com"