Word VBA — Как получить горизонтальное положение с табуляцией?

#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)