Я пытаюсь автоматизировать создание электронной подписи в VB.NET с помощью Word Interop.
Все работает отлично, за исключением попыток программного добавления гиперссылок, таких как (например) адрес электронной почты - все хорошо и неплохо писать письмо и ожидать, что почтовый клиент / браузер с другой стороны преобразует его, но я бы хотел указать ссылки самостоятельно (для таких вещей, как социальные ссылки, наша политика конфиденциальности и т. д.)
Вот соответствующие сегменты кода, который я использую:
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
Используя пример здесь , я считаю, что вместо objSelection.TypeText(strEmail)
is ...
следует использовать следующее
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 )? Что я делаю не так?