Моя цель - извлечь все адреса электронной почты из Word.ActiveDocument
и поместить их в одну ячейку на листе Excel.
Код запускается из редактора Excel VBA. Нужно искать адреса электронной почты, извлекать их из документа и заполнять ячейку Excel Activesheet.Range("C31")
. Доступна только одна ячейка, независимо от того, сколько адресов электронной почты найдено.
Найденные адреса должны быть разделены с помощью ", "
запятой и пробела.
Я пытаюсь Сделайте это, найдя в документе @
, а затем увеличьте диапазон вперед и назад, чтобы все адреса электронной почты были в переменной диапазона. Построить адрес справа было довольно просто, используя rng.MoveEndUntil Cset:=","
, потому что в моем документе после адреса электронной почты всегда есть кома.
Но как получить недостающую левую сторону адреса электронной почты в переменной диапазона? ? Я использовал rng.MoveStart Unit:=wdWord, Count:=-1
, но что, если письмо будет romek. zjelonek@wp.com или grawer. best@yahoo.com Это не будет работать.
Это то, что у меня сейчас.
Sub FindEmail035() '[0-9;A-z;,._-]{1;}\@[0-9;A-z;._-]{1;}
'[0-9;A-z;,._-]{1;}\@[0-9;A-z;._-]{1;}
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim ExcelApp As Excel.Application
Dim rng As Word.Range
Dim emailAdr As String
Dim ws As Worksheet
Set WordApp = GetObject(, "Word.Application")
Set ExcelApp = GetObject(, "Excel.Application")
Set WordDoc = WordApp.ActiveDocument
Set rng = WordApp.ActiveDocument.Content
Set ws = ExcelApp.ActiveSheet
ExcelApp.Application.Visible = True
With rng.Find
.Text = "@"
.Wrap = wdFindAsk
.Forward = True
.MatchWildcards = False
.Execute
Debug.Print rng.Text
If .Found = True Then
'rng.Expand (wdWord)
'Debug.Print rng.Text
rng.MoveStart Unit:=wdWord, Count:=-1
Debug.Print rng.Text
rng.MoveEndUntil Cset:=","
'rng.MoveEnd Unit:=wdWord, Count:=1
'rng.MoveEndUntil Cset:=" ", Count:=wdBackward
End If
End With 'how to create loop that will extract all the email addresses in the document??
ws.Range("C31").Value = rng
End Sub
Что l oop я должен использовать, чтобы получить количество писем, присутствующих в документе, а затем составить диапазоны с адресами электронной почты внутри?
Это место в документе, где находятся почтовые адреса.