Как добавить гиперссылки Word из ячеек Excel с помощью VBA (hyperlink.add) - PullRequest
0 голосов
/ 07 января 2019

Я хочу использовать Excel VBA для создания ссылок в документе Word на основе диапазонов ячеек Excel. Но когда он достигает линии hyperlinks.add, я получаю "run-time error ‘450’: Wrong number of arguments or invalid property assignment".

Практически точно такой же код прекрасно работает в Word VBA. Я не понимаю сообщение об ошибке. Хотя я хорошо знаком с Excel VBA, выбор и диапазоны Word VBA меня смущают.

Я сделал примеры кода ниже, используя строки вместо диапазонов, в каждом случае код успешно вставляет текст в конец документа test.docx, но, хотя Word VBA вставляет текст со ссылкой ниже этого, код Excel VBA завершается ошибкой при hyperlinks.add строка.

Вот код Excel VBA, который не работает:

Sub wordLinkFromExcelRanges()
Dim wApp As Word.Application, wDoc As Word.Document
Dim linkText As String, link As String
  linkText = "google"
  link = "http://www.google.com"
  Set wApp = New Word.Application
  wApp.Visible = True
  Set wDoc = wApp.Documents.Open("C:\test\test.docx")
  With wApp.Selection
    .EndKey 6, 0 'go to end of doc
    .TypeParagraph
    .TypeText "text without link"
    .TypeParagraph
    wDoc.Hyperlinks.Add Anchor:=Selection.Range, Address:=link, _
    SubAddress:="", ScreenTip:="", TextToDisplay:=linkText
  End With
  wApp.Quit
  Set wDoc = Nothing
  Set wApp = Nothing
End Sub

Вот код Word VBA, который работает:

Sub wordLinkFromWord()
Dim wD As Document
Dim linkText As String, link As String
linkText = "google"
link = "http://www.google.com"
Set wD = ActiveDocument
With Selection
  .EndKey 6, 0
  .TypeParagraph
  .TypeText "text without link"
  .TypeParagraph
  wD.Hyperlinks.Add Anchor:=Selection.Range, Address:=link, _
  SubAddress:="", ScreenTip:="", TextToDisplay:=linkText
End With
End Sub

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Я думаю, что нашел проблему. Вы имеете в виду Selection.Range, но я не думаю, что в этом контексте ничего выбрано.

Вы можете попробовать это вместо:

Sub wordLinkFromExcelRanges()
    Dim wApp        As Word.Application: Set wApp = New Word.Application
    Dim wDoc        As Word.Document
    Dim linkText    As String: linkText = "google"
    Dim link        As String: link = "http://www.google.com"

    wApp.Visible = True
    Set wDoc = wApp.Documents.Open("C:\test\test.docx")
    With wApp.Selection
      .EndKey 6, 0
      .TypeParagraph
      .TypeText "text without link"
      .TypeParagraph
      wDoc.Hyperlinks.Add Anchor:=.Range, Address:=link, SubAddress:="", ScreenTip:="", TextToDisplay:=linkText
    End With
    wApp.Quit
End Sub
0 голосов
/ 07 января 2019

Я понял: "Selection" в строке проблемы должно быть "wApp.Selection"

wDoc.Hyperlinks.Add Anchor: = wApp.Selection.Range, Address: = link, _ SubAddress: = "", ScreenTip: = "", TextToDisplay: = linkText

Мне помог процесс создания минимального примера - может быть, простой пример поможет и другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...