Удалить пробел до и после в Outlook

Я пытаюсь написать макрос для Outlook (никогда не писал макрос, или VBA в этом отношении), который удалит пробел до и после текста, который я выбрал.

Вот что я собрал из примеров, которые нашел:

Sub FixParagraphSpacing()
    Dim objOL As Application
    Dim objDoc As Object
    Dim objSel As Object

    Set objOL = Application
    Set objDoc = objOL.ActiveInspector.WordEditor
    Set objSel = objDoc.Windows(1).Selection

    objSel.ParagraphFormat.SpaceBefore = 0
    objSel.ParagraphFormat.SpaceAfter = 0

    Set objOL = Nothing
    Set objDoc = Nothing
    Set objSel = Nothing
End Sub

Проблема в том, что код выполняется, и почти ничего не происходит. На тело письма это не влияет, но я больше не могу удалять интервалы до и после вручную, потому что Outlook считает, что это уже сделано.

Что мне здесь не хватает?

Обновить

Вот мой обновленный код, основанный на ответе @KevinPope:

Sub FixParagraphSpacing()
    Dim objOL As Application
    Dim sel As Object

    Set objOL = Application
    Set sel = objOL.ActiveInspector().WordEditor.Application.Selection

    For Each para In sel.Paragraphs
        para.SpaceBefore = 0
        para.SpaceAfter = 0
    Next para
End Sub

Перед тем, как запустить код, вот что я вижу в разделе "Интервал между строками и абзацами":

Удалить интервал

И вот что я вижу после запуска макроса:

Добавить интервал

К сожалению, кроме этого, в теле письма не вносятся видимые изменения.


Скриншот текста по запросу:

3 ответа

Я тоже столкнулся с той же проблемой. При запуске макроса кажется, что он обновляет значения (пробел до / после до 0), но не применяет настройки к выделенному тексту.

Но затем добавление SpaceBeforeAuto = False сработало...

Sub FixParagraphSpacing()
    Dim objOL As Application
    Dim objDoc As Object
    Dim objSel As Object

    Set objOL = Application
    Set objDoc = objOL.ActiveInspector.WordEditor
    Set objSel = objDoc.Windows(1).Selection

    objSel.ParagraphFormat.SpaceBefore = 0
    objSel.ParagraphFormat.SpaceBeforeAuto = False
    objSel.ParagraphFormat.SpaceAfter = 0
    objSel.ParagraphFormat.SpaceAfterAuto = False

    Set objOL = Nothing
    Set objDoc = Nothing
    Set objSel = Nothing
End Sub    

Попробуйте использовать "Selection.WholeStory" перед настройкой форматирования абзаца. Это сработало для меня.

Примерно так должно отсортировать межстрочный интервал до и после выбранного абзаца:

Sub Test()
    Dim objOL As Application
    Dim sel As Object

    Set objOL = Application
    Set sel = objOL.ActiveInspector().WordEditor.Application.Selection

    sel.Paragraphs(1).SpaceBefore = 0
    sel.Paragraphs(1).SpaceAfter = 0
End Sub

Дайте мне знать, если это не сработает, и мы можем повторить это.

Другие вопросы по тегам