Office 365 Publisher选中文本行间距修改及批量处理VBA语法问题
手动修改行间距步骤
选中目标文本后,按以下操作调整:
- 打开开始选项卡,找到段落组的行间距按钮(图标为几条横线)
- 点击下拉菜单,选择行距选项
- 在段落设置窗口中,将行距改为「多倍行距」,然后在设置值中输入1.3,点击确定即可
VBA批量处理代码修正
原代码存在多处逻辑与语法错误,以下是修正后的完整代码及问题说明:
修正后的代码
Sub fixPublications() Dim PubDoc As Document Dim PubPage As Page Dim PubShape As Shape Dim MyDoc As Long Dim MyPage As Long Dim MyShape As Long Dim MyFileName As String ' 遍历所有已打开的文档 For MyDoc = 1 To Documents.Count Set PubDoc = Documents(MyDoc) ' 处理文件名,避免生成xxx.pub_R.pub格式 MyFileName = Left(PubDoc.FullName, InStrRev(PubDoc.FullName, ".") - 1) & "_R.pub" ' 遍历文档内每一页 For MyPage = 1 To PubDoc.Pages.Count Set PubPage = PubDoc.Pages(MyPage) ' 遍历页面上所有形状 For MyShape = 1 To PubPage.Shapes.Count Set PubShape = PubPage.Shapes(MyShape) ' 检查是否为含文本的文本框,且字体为Comic Sans MS If PubShape.HasTextFrame Then If PubShape.TextFrame.HasText Then If PubShape.TextFrame.TextRange.Font.Name = "Comic Sans MS" Then ' 正确设置多倍行距为1.3 With PubShape.TextFrame.TextRange.ParagraphFormat .LineSpacingRule = pbLineSpacingMultiple .LineSpacing = 1.3 End With End If End If End If Next MyShape Next MyPage ' 保存修改后的文档并关闭 PubDoc.SaveAs2 FileName:=MyFileName, FileFormat:=pbSaveAsPublisher PubDoc.Close Next MyDoc End Sub
关键修正说明
- 文档遍历逻辑:原代码固定取
Documents(2),改为按索引遍历所有已打开文档,避免遗漏或重复处理 - 形状对象赋值:原代码未给
PubShapes赋值就调用Count,改为直接从PubPage.Shapes获取数量 - 字体判断:原代码直接比较
Font对象,改为检查Font.Name属性,这是判断字体名称的正确方式 - 行间距语法:Publisher VBA设置多倍行距需先指定
LineSpacingRule = pbLineSpacingMultiple,再设置LineSpacing = 1.3,二者缺一不可 - 空文本框处理:增加
PubShape.TextFrame.HasText判断,避免空文本框触发错误 - 文件名处理:修正保存时的文件名拼接逻辑,避免生成格式错误的文件名
内容的提问来源于stack exchange,提问作者LearningVBAtheHardWay
相关产品推荐
相关产品推荐

