我正在尝试为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
在运行代码之前,这是我在Line和Paragraph Spacing下看到的内容:
这是我在运行宏之后看到的:
不幸的是,除此之外,电子邮件正文中没有明显的变化。
每个请求的文本截图:
答案 0 :(得分:2)
我也遇到了同样的问题。 运行宏时,它似乎确实更新了值(空格前/后为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
答案 1 :(得分:1)
这样的东西应该在选定的段落之前和之后挑选行间距:
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
如果这不起作用,请告诉我们,我们可以对其进行迭代。
答案 2 :(得分:1)
尝试使用" Selection.WholeStory"在设置段落格式之前。它对我有用。