#vba #ms-word
#vba #ms-word
Вопрос:
Я пытаюсь проанализировать несколько документов Word (которые ранее были экспортированы из документа pdf), в общей сложности более 2000 строк.
Для извлечения данных я использую регулярное выражение без каких-либо проблем, кроме одной: поля валюты могут быть «Снять» или «внести» (это баланс банковского счета), и единственное различие между ними заключается в их горизонтальном положении (к сожалению, не могу говорить о столбце, поскольку он не отформатирован как таблица).).
Я прошу у вас идеи, как определить, выводятся они или вносятся.
Моя грубая идея:
- получить из word позиции вкладок с помощью
doc.Paragraphs.TabStops
- узнайте, сколько символов табуляции осталось после второй даты. Но как?
- вычислите длину символов валюты и, следовательно, позицию справа от валюты (они выровнены справа). Но опять же, как?
Ответ №1:
Одна из возможностей:
Получите Word.Range первой суммы (без даты) в строке / абзаце и используйте
TheRange.End.Information(wdHorizontalPositionRelativeToPage)
чтобы определить, в каком столбце они находятся (вероятно, будут некоторые различия даже в каждом столбце)
Ответ №2:
Спасибо @ [слегка придирчивый], я решил этот путь. Я публикую это, поскольку в свойстве есть незначительные различия: сначала мне пришлось свернуть.
Set oFound = r.Range 'where r is the searched paragraph
With oFound.Find
.Text = ",^#^#" 'searching for the first amount, which ends with comma and two digits
.MatchCase = False
.ClearFormatting
.MatchWholeWord = False
.Forward = True
.MatchWildcards = False
.Execute
End With
oFound.Collapse wdCollapseEnd
Debug.Print oFound.Information(wdHorizontalPositionRelativeToPage)