Удалить пробел до и после в 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
Дайте мне знать, если это не сработает, и мы можем повторить это.