对齐除换行符分隔的行之外的所有文本



我是新来的,所以提前感谢您的耐心等待。另外,我的母语不是英语,所以有些东西可能会在翻译中丢失。

我发现这个很棒的 vba 宏可以"对齐所有文本是 Microsoft Word"[来自 Alvin567] 和你们所有人 1,它按计划工作。

我想对其进行调整,以便它不会证明我的文档中具有 Shift+Enter(我认为换行符)的段落是合理的。我似乎找不到如何引用该特定字符,因为它与"Chr(13)"不同。

我通常擅长从录音工具中改编代码或在线找到我正在寻找的内容,即使我从未通过任何课程学习过它,但是有了这个课程,我似乎无法自己弄清楚。

任何帮助将不胜感激。

所以这是代码:

Sub JustifyAllTheText(control As IRibbonControl) 'Don't forget to link it with RibbonX
On Error Resume Next
Dim para   As Paragraph
Dim searchRange As Range
Set searchRange = Selection.Range
searchRange.End = ActiveDocument.Content.End
For Each para In searchRange.Paragraphs
If para.Range.Font.Size = 10 Then
'If para.Range.Font.ColorIndex = wdBlack Then 'I don't need it but kept it just in case
If Not para.Range.InlineShapes.Count > 0 Then
'If Not para.Range.IsEndOfRowMark = True Then 'Added line to test linebreak but doesn't work to made into text
If Not para.Range = vbLf Then
If Not para.Range.Information(wdWithInTable) Then
para.Range.ParagraphFormat.Alignment = wdAlignParagraphJustify
End If
End If
End If
End If
Next para
End Sub

谢谢!

不能通过任何段落对齐选项对齐以手动换行符结尾的行。相反,您需要修改兼容性设置,因此:

Sub Demo()
Application.ScreenUpdating = False
ActiveDocument.Compatibility(wdExpandShiftReturn) = True
Application.ScreenUpdating = True
End Sub

您不希望以这种方式对齐的任何行都需要在手动换行符之前插入一个制表符。

此外,您不应该通过以下代码强制对齐段落:

para.Range.ParagraphFormat.Alignment = wdAlignParagraphJustify

这可能会导致文件膨胀,并可能导致腐败。相反,您应该修改基础段落样式 - 这也意味着对整个文档中的所有受影响段落进行一次更改。

谢谢大家的帮助。

由于以这种方式证明不是一件好事,我设法通过混合查找和替换宏来摆脱 Shift+Enter 来获得我的结果,他们修改了 Normal 样式来证明它的合理性。将它们放在一起,并在我的 RibbonX 自定义选项卡上添加一个按钮。总而言之,一切都会按原样结束,我们在按钮的帮助下节省时间。

谢谢!

你可以检查If InStr(para.Range.Text, vbVerticalTab) = 0 Then

如果将当前代码行If Not para.Range = vbLf Then替换为此行,则宏将排除因应用 wdAlignParagraphJustify 而具有软返回的段落

vbVerticalTab等于chr(11),在Word中是Shift+Enter的"字符"

最新更新