Vba 在Outlook中删除前后的空间

Vba 在Outlook中删除前后的空间,vba,outlook,outlook-2010,Vba,Outlook,Outlook 2010,我正在尝试为Outlook编写一个宏(从未编写过宏,或VBA),该宏将删除所选文本前后的空间 这是我从我发现的例子中拼凑出来的: Sub FixParagraphSpacing() Dim objOL As Application Dim objDoc As Object Dim objSel As Object Set objOL = Application Set objDoc = objOL.ActiveInspector.WordEditor

我正在尝试为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
在运行代码之前,以下是我在行距和段落间距下看到的内容:

下面是我运行宏后看到的内容:

不幸的是,除此之外,电子邮件正文中没有任何可见的更改。


每个请求的文本截图:


类似的内容应该在选定段落前后整理行距:

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

如果这不起作用,请告诉我,我们可以对其进行迭代。

在设置段落格式之前,请尝试使用“Selection.Whentitory”。这对我很有效。

我也面临同样的问题。 运行宏时,它似乎会更新值(将前后空格改为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    

此间距是否与空格(或制表符)字符中的间距相同?或者在文本行间距(行高)?@KevinPope,行高。谢谢你添加,James。要确认,文本之间没有空行(即,只能在已键入的行上键入)。看起来就像双倍间距,但是从“行间距”和“段落间距”选项卡中的快照显示单间距。是否有任何其他加载项或宏可以强制执行此行为?@KevinPope,没有其他加载项或宏。如果我突出显示文本并使用段落间距下拉列表来
删除段落前的空格
删除段落后的空格
,它看起来应该是这样的。这就是整件事的奇怪之处。我收到一个错误-
编译错误:用户定义类型未定义。它在第一行。更新-我使用早期绑定(我在代码的其他地方显式添加了Word对象模型引用),所以我改为后期绑定。或者,您应该能够将代码从
段落格式
更新为
段落(1)
,以使其正常工作。此解决方案无法处理选择了多个段落的情况。如果选择了多个段落,是否会很难遍历这些段落?如果不可能,那么简单地使用内置功能所需的点击次数要比单独选择每个段落,然后单击宏按钮所需的点击次数要少。您可以对选择段落中的每个段落使用
,并以
下一个
结束该块。或者,如果您只需要第一段和最后一段,您可以执行选择段落(1)
和选择段落(选择段落.计数)
(选择段落.计数)
(选择段落.计数>1)感谢您的努力。这给了我与我之前尝试的代码相同的结果。从本质上说,编辑认为间距已被删除,但事实并非如此。我会更新帖子来说明。最后!这就是答案。一切都开始工作了
mail.GetInspector.WordEditor.Windows(1.Selection.whistory()
。以下是文档:“扩展选择以包括整个故事。”