2017-01-21 4 views
-1

Я работаю над VB 2015, и у меня есть проблема. Я хочу найти гиперссылки в текстовом документе, содержащем абзац с несколькими словами, содержащими гиперссылки. Как найти все гиперссылки и перечислить их в текстовом или текстовом поле?Как найти гиперссылки в текстовом документе?

Public Class Form1 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim wa As Microsoft.Office.Interop.Word.Application 
     Dim wd As Microsoft.Office.Interop.Word.Document 
     Dim wp As Microsoft.Office.Interop.Word.Paragraph 
     wa = CreateObject("Word.Application") 
     wa.Visible = False 
     wd = wa.Documents.Add 
     wp = wd.Content.Paragraphs.Add 
     wp.Range.Paste() 
     wd.SaveAs("F:\sample.docx") 

     Dim colHyperlinks As String = wd.Hyperlinks.ToString 

     For Each objHyperlink In colHyperlinks 
      TextBox1.Text = objHyperlink.TextToDisplay 
     Next 

     wa.Quit() 
    End Sub 

End Class 
+0

Первый вопрос, который я вижу, вы определить строку для гиперссылок, гиперссылки *** - это коллекция ***, в которой может быть более одного элемента ... Затем вы выполняете цикл, который не должен, потому что это строка, а не список или коллекция. – Codexer

+0

Вы можете заметить, что я скопировал текст с веб-страницы, а затем вставил его кодом в текстовый документ, и я хочу найти гиперссылки. –

ответ

0

Как уже отмечался в комментариях по выше, вы объявляете string типа на Word.Hyperlinksколлекции объектов. Поэтому вы бы получили только одну строку, а не другие. Пожалуйста, смотрите ниже код, комментарии на то, что он делает ...

Примечания: Код испытанного

'returns a collection of links, not a string 
Dim colHyperlinks As Word.Hyperlinks = wd.Hyperlinks() 

Этот код ниже только LINQ заявления, чтобы получить все гиперссылки в List(Of String). Вы можете перебрать, если вы хотите, и затем добавить их в Textbox, если вы хотите ...

'get all the hyperlinks 
Dim arr As List(Of String) = (From hl As Word.Hyperlink In colHyperlinks Select hl.TextToDisplay).ToList() 

'show the url's 
TextBox1.Text = String.Join(Environment.NewLine, arr) 

Или только в одной строке, если вы хотите ...

TextBox1.Text = String.Join(Environment.NewLine, (From hl As Word.Hyperlink In colHyperlinks Select hl.TextToDisplay).ToList()) 
+0

возвратите некоторые ошибки, а первый из них: Тип «Word.Hyperlinks» не определен. –

+0

Эта ошибка связана с тем, что вы не импортировали пространство имен .. добавьте это в начало класса: *** Импортирует Microsoft.Office.Interop ***, если он был там, вам не нужно указывать пространства имен, как вы ... – Codexer

+0

Я сделал это, но он не возвращает гиперссылки, он возвращает только слова. около вчера, я имел в виду 1 AM, вы знаете, что я был сонным. :) –

Смежные вопросы