Я пытаюсь написать макрос, который берет информацию из листа Excel и открывает и заполняет уже существующий шаблон электронной почты Word. Я хотел, чтобы информация с каждого листа была go в указанном разделе этого документа, и каждая строка заполняла части предложения. Мне удалось сделать это успешно, реализовав поиск и замену этих циклов для каждой строки документа Excel.
Однако гиперссылки проходят только как текст и, насколько я понимаю, не могут быть сохранены как объект и затем используется для замены текста, например строкового содержимого ячеек. Впоследствии я попытался использовать функцию Hyperlinks.Add, и мой код успешно переносит гиперссылки из каждой строки в документ, но я не могу контролировать, где в документе они размещены. Насколько я понимаю, это может быть связано с выражением перед Hyperlinks.Add и тем, что находится в привязке.
Цель состоит в том, чтобы информация передавалась построчно с включенными гиперссылками. Ie.
Содержимое ячейки (A1) «Ручной текст» Гиперссылка из ячейки (B1)
Содержимое ячейки (A2) «Ручной текст» Гиперссылка из ячейки (B2) .. .et c
Я новичок в VBA, поэтому заранее извиняюсь за любые дублирования или неуклюжести, любые советы будут большим подспорьем.
Option Explicit
Sub CreateWordDocuments()
Dim CustRow1, CustCol1, LastRow1, TagName1, TagValue1 As String
Dim DocLoc, TagName, TagValue, TemplName, FileName As String
Dim WordApp As Word.Application: Set WordApp = New
Word.Application
Dim WordDoc As Word.Document
Dim WordContent As Word.Range
Dim WordTempLoc As FileDialog
Set WordTempLoc = Application.FileDialog(msoFileDialogFilePicker)
With WordTempLoc
.Title = "Select Word file to attach"
.Filters.Add "Word Type Files", "*.docx,*.doc", 1
If .Show <> -1 Then GoTo NoSelection
DocLoc = .SelectedItems(1)
End With
NoSelection:
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open(FileName:=DocLoc,
ReadOnly:=False) 'Open Template
Dim linkText As String
Dim link As String
LastRow1 = Worksheets("pipeline.gs.closed-or-
cancelle").Range("F9999").End(xlUp).Row
TagName1 = "PIPELINECLOSED" 'Tag Name
For CustRow1 = 2 To LastRow1
linkText = Worksheets("pipeline.gs.closed-or-
cancelle").Cells(CustRow1, "J")
link = Worksheets("pipeline.gs.closed-or-
cancelle").Cells(CustRow1, "O")
TagValue1 = Worksheets("pipeline.gs.closed-or-
cancelle").Cells(CustRow1, "G") & " Manual Text"
With WordApp.Selection.Find
.Execute FindText:=TagName1
Код ниже
WordDoc.Hyperlinks.Add Anchor:=WordApp.Selection.Range,
Address:=link, SubAddress:="", ScreenTip:="", TextToDisplay:=linkText
^^
End With
End Sub