Получить значения из документа word по маске макросом в excel - VBA

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Подскажите, пожалуйста, можно ли макросом произвести поиск по маске в документах Word и вывести все значения в таблицу Excel? И как это сделать? Ситуация: есть около 300 документов word нужно достать значения, находящиеся в фигурных скобках Пример {Part1.1.8 REQ 2.8.1.f1.3.2-000-X, 2.8.1.1.2.7-000-Z} Т.е. маска поиска в word подстановочными знаками [{]?*[}] В экселе нужно получить: имя файла | Part1.1.8 REQ 2.8.1.f1.3.2-000-X, 2.8.1.1.2.7-000-Z (все значения в скобках по документу через запятую и пробел) Уважаемый

toiai

в теме Получить определенные значения из документа word макросом помогал участнику форума с аналогичной задачей, однако, у меня не получается адаптировать этот макрос под мою задачу.

Решение задачи: «Получить значения из документа word по маске макросом в excel»

textual
Листинг программы
  1. Sub InfaScobok()
  2.     Dim b(), i&, j&, txt$, n&, k&, rw&, NameFile$, col&
  3.     Workbooks.Add
  4.     Set ShExcel = ActiveSheet
  5.     Cells(1, 1) = "Имя файла"
  6.     FileDocs = Application.GetOpenFilename(filefilter:="Documents(*.doc;*.docx),*.doc;*.docx", _
  7.                 Title:="Выберите файлы с данными", MultiSelect:=True)
  8.     If Not IsArray(FileDocs) Then Exit Sub
  9.     Application.ScreenUpdating = False
  10.     Set objWord = CreateObject("Word.Application")
  11.     'objWord.Visible = True
  12.    For k = 1 To UBound(FileDocs)
  13.         With objWord.Documents.Open(FileDocs(k))
  14.             txt = .Range.Text
  15.             s = Split(txt, "{")
  16.             NameFile = .Name
  17.             .Close
  18.             If UBound(s) = 0 Then GoTo Sled
  19.             ReDim b(1 To UBound(s), 1 To 1)
  20.         End With
  21.         For n = 1 To UBound(s)
  22.             txt = Split(s(n), "}")(0)
  23.             col = Len(txt) \ 256 + 1
  24.             If col > UBound(b, 2) Then ReDim Preserve b(1 To UBound(b, 1), 1 To col)
  25.             For i = 1 To col
  26.                 b(n, i) = Mid(txt, (i - 1) * 256 + 1, 256)
  27.             Next
  28.         Next
  29.         With ShExcel
  30.             rw = .UsedRange.Rows.Count + 1
  31.             .Cells(rw, 1).Resize(UBound(b), 1) = NameFile
  32.             .Cells(rw, 2).Resize(UBound(b), UBound(b, 2)) = b
  33.         End With
  34. Sled:
  35.     Next
  36.     Application.ScreenUpdating = True
  37.     objWord.Quit
  38. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут