Цикл для извлечения двух разных строк из одной строки в Excel VBA - PullRequest
0 голосов
/ 14 марта 2019

Я получил HTML-текст в Excel, и я просто пытаюсь извлечь из него какой-то текст.

У меня есть следующий текст в ячейке A1:

<b>From:</b></p>  </td>  
<td width=760 colspan=10 valign=bottom 
     style='width:380.0pt;padding:0in 0in 0in 0in;  height:9.05pt'>  
<p class=MsoNormal><a href="mailto:name@email.com">LastName, First</a></p>  
</td> </tr>

Я хочу извлечь«name@email.com» и «LastName, First» и поместите каждый в ячейки B1 и C1 соответственно.Мне нужно будет выполнить цикл по нескольким ячейкам, поэтому мне нужно учитывать, что строки различаются по длине.

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

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Со строкой в ​​ A1 , в B1 введите:

=LEFT(MID(A1,FIND("mailto:",A1)+7,9999),FIND(CHAR(34),MID(A1,FIND("mailto:",A1)+7,9999))-1)

и в C1 введите:

=LEFT(MID(A1,FIND(B1,A1)+LEN(B1)+2,9999),FIND("<",MID(A1,FIND(B1,A1)+LEN(B1)+2,9999))-1)

Например:

enter image description here

0 голосов
/ 14 марта 2019

Может быть, что-то подобное.Остерегайтесь кавычек ("), мой код для переменной HTML не учел это! Найдите в HTML-коде разделители строк, которые всегда одинаковы

Dim HTMLarray1() As String
Dim HTMLarray2() As String
Dim HTML As String

HTML = "<b>From:</b></p></td><td width=760 colspan=10" _
& "valign=bottom style='width:380.0pt;padding:0in 0in 0in 0in;" _
& "height:9.05pt'><p class=MsoNormal>" _
& "<a href="mailto:name@email.com">LastName, First" _
& "</a></p></td></tr>"

HTMLarray1 = Split(HTML, "<a href="mailto:")
HTMLarray1 = Split(HTMLarray1(1), "">")
HTMLarray2 = Split(HTMLarray1(1), "</a>")

Dim email As String
Dim name As String
email = HTMLarray1(0)
name = HTMLarray2(0)
...