2017-02-16 35 views
-1

Я немного начинаю, когда речь заходит о VBA (в основном, переходите через код с помощью действий записи, а затем изменяете его в соответствии с тем, что мне нужно).Microsoft Word VBA - IF & THEN Найти слово и распечатать на другом листе

Моя текущая задача заключается в следующем:

Я собираюсь собрать сотни Docs слов, которые содержат адреса электронной почты от клиентов, что мне нужно. Чтобы сделать это как можно проще, я хотел бы иметь код, который находит их электронные письма. И дополнительную информацию, которая окружает адреса электронной почты (имя, местоположение, название должности и [возможно] номер телефона), а затем копирует и вставляет указанной информации в другой обозначенный документ. Документы и вышеупомянутая информация отформатированы как таковой:

FirstName LastName 
Location 
Job title @ Company 
email address - phone number 

Теперь, я считаю, что это будет включать в себя и IF/THEN заявление, поскольку не все клиенты имеют свои адреса электронной почты в документах.

Итак, ЕСЛИ есть адрес электронной почты, ТОГДА скопируйте его вместе с тремя строками выше и номером телефона, который разделен пробелом «-» «пробел» и вставьте его на другой лист. ЕСЛИ нет адреса электронной почты, а затем продолжайте движение.

Этот код запроса, вероятно, включает в себя FIND, который должен иметь «@» и «.com», прикрепленные к одной и той же строке. Это потребуется, поскольку в документе также содержится другой текст, который имеет «.com» и «@», но не вместе.

Это звучит сложнее, чем на самом деле, но опять же я новичок, поэтому не совсем уверен. Не стесняйтесь задавать дополнительные вопросы!

ответ

0

Это очень широкий вопрос, но я предлагаю вам сделать следующее:

  • Используйте Scripting.FileSystemObject перебирать файлы в папке, ищет документы Word,
  • Откройте документ с помощью автоматизации Word, объектная модель
  • Найти сообщения электронной почты в пределах документа (через Document.Content собственности и Range объекта)
  • Если метод Find.Execute2007 возвращает истину, то:
    • Расширьте диапазон 3 предыдущих пунктов
    • Скопируйте и вставьте диапазон целевого документа
      • Вы можете написать только текст в документ назначения — Range.Text Недвижимость, d в Range.Insert- * Методы
      • Или, вы можете использовать буфер обмена Range.Copy и Range.Paste
      • Или, вы можете экспортировать во внешний файл (Range.ExportFragment), а затем импорт из внешнего файла (Range.ImportFragment)
+0

Я очень ценю ваш подробный ответ. Я считаю, что я немного застрял, хотя ... это то, что я написал до сих пор и, к сожалению, получаю «Ошибка времени выполнения» 424 «Требуемый объект». ([/] указывает на разрыв абзаца ...... Sub FindEmails()/Set myRange = ActiveDocument.Content/myRange.Find.Execute2007 FindText: = "^ 064" и ".com"/Если myRange.Find.Execute2007 = True Затем Selection.MoveStart Unit: = wdLine, Count: = - 4/End If myRange.Find.Execute2007.ExportFragment «LinkedInEmails», wdFormatDocument/End Sub ..... Если бы вы могли помочь мне определить, где я – GGp

+0

@GGp (1) Когда вы задаете вопросы VBA с ошибками, важно указать, какая строка вызывает ошибку - это линия с желтым фоном. (2) IIRC, вам нужно для хранения результатов 'myRange.Find.Execute2007 ...' в переменной 'Boolean', потому что каждый раз, когда вы повторяете ее,' Range' будет уменьшен до найденного текста, если таковой имеется. (3) При отправке кода в StackOverflow , если он находится в блоках, то каждая строка должна начинаться с четырех пробелов, а если внутри, то код должен быть разграничен как '\' this \ ''. –

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