Есть ли более быстрый способ, чем перебирать абзацы документа? - PullRequest
0 голосов
/ 19 июня 2020

Полный послушник. Я создал документ Word с помощью Pando c, но вывод Arabi c потребовал некоторой модификации. Просматривая онлайн-документацию и сообщения, я получил следующий код:

Sub pandoc_RTL()
'
' pandoc_RTL Macro
'
'

Dim objPara As Paragraph

    For Each objPara In ActiveDocument.Paragraphs

        If objPara.Style = "body AR" Then
            objPara.Range.Select            
            Selection.RtlRun
            Selection.RtlPara
        End If

        If objPara.Style = "hadith AR" Then
            objPara.Range.Select
            Selection.RtlRun
            Selection.RtlPara
        End If

        If objPara.Style = "hadith in-list AR" Then
            objPara.Range.Select
            Selection.RtlRun
            Selection.RtlPara
        End If

        If objPara.Style = "athar AR" Then
            objPara.Range.Select
            Selection.RtlRun
            Selection.RtlPara
        End If

        If objPara.Style = "body AR" Then
            objPara.Range.Select
            Selection.RtlRun
            Selection.RtlPara
        End If

    Next

End Sub

Мои вопросы:

  1. Regex - единственный способ избежать повторения, поскольку все необходимые стили заканчиваются на «AR»?
  2. Есть ли более быстрый способ сделать это, кроме перебора всех абзацев?

1 Ответ

1 голос
/ 19 июня 2020

Вам нужно только изменить стили. Для этого доступны переключатели через Управление стилями> Изменить> Формат> Абзац> Отступы и интервалы в любом документе, для которого включен язык RTL. В любом случае, используя VBA:

Dim i As Long, ArrStl
ArrStl = Array("body AR", "hadith AR", "hadith in-list AR", "athar AR")
For i = 0 To UBound(ArrStl)
  ActiveDocument.Styles(ArrStl(i)).ParagraphFormat.ReadingOrder = wdReadingOrderRtl
Next

Готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...