VBA和Publisher - 替换母版页中的文本

问题描述 投票:0回答:2

最近我一直在努力与出版商合作,最近引起关注的是软件无法提供简单的自动更新“总页数”。

我决定研究宏来寻找解决方案,但由于我对VBA的了解有限,我在遇到障碍之前只能变得如此胖。

我想创建一个宏,它在文档打开时自动启动,并尽可能频繁地更新母版页中的文本框。文本框应显示“Y的页面X”,但由于出版商的限制,只有“X”会自动更新而不使用宏。

我现在拥有的:

Private WithEvents PubApp As Publisher.Application

Private Sub Document_Open()
 Set PubApp = Publisher.Application
End Sub

Private Sub PubApp_WindowPageChange(ByVal Vw As View)
 MsgBox "Your publication contains " & _
 ActiveDocument.Pages.Count & " page(s)."
End Sub

打开文档时,宏会自动启动,并在每次用户更改页面时创建一个带有总页码的弹出窗口。

所以,我完成了我的目标的前半部分,但我需要一些帮助。

vba ms-publisher
2个回答
0
投票

对于遇到同样问题的人来说,这是一个有效的宏

Private WithEvents PubApp As Publisher.Application

Private Sub Document_Open()
 Set PubApp = Publisher.Application
End Sub

Private Sub PubApp_WindowPageChange(ByVal Vw As View)

  Dim mp As MasterPages
  Set mp = ActiveDocument.MasterPages

  With mp.Item(1)
   .Shapes(19).TextFrame.TextRange.Text = ""
   .Shapes(19).TextFrame.TextRange.InsertPageNumber
   .Shapes(19).TextFrame.TextRange.InsertBefore _
            NewText:="Page "
    If ActiveDocument.Pages.Count > 9 Then
        .Shapes(19).TextFrame.TextRange.InsertAfter _
            NewText:=" of " & _
            ActiveDocument.Pages.Count
    Else
        .Shapes(19).TextFrame.TextRange.InsertAfter _
            NewText:=" of 0" & _
            ActiveDocument.Pages.Count
    End If
  End With

End Sub

Xmp.Item(X)中标识您的母版页(如果您有多个母版页)。

Y中的Shapes(Y)标识了目标文本框。

宏在后台运行,无需主动输入,并在每次更改页面时刷新目标文本框的内容。

由于文档中使用的自动页面编号格式是“01, 02, 03 ... 11, 12 13”,因此如果所述数字低于0,我在if页面总数之前添加了一个if选项以添加10

我确信有更优雅的方法来解决这个问题,但是嘿,至少它有效。


0
投票

以下是其他任何试图研究有限信息的人员的澄清,这些信息是使用Publisher中的VBA以编程方式更改母版页中的页眉或页脚。此提示还包括如何向标题的左侧,中间,右侧部分添加文本的说明:

所有的功劳归功于M.Baroni

Function FixHeader1()
  Dim mp As MasterPages
  Set mp = ActiveDocument.MasterPages
  With mp.Item(1)
   .Header.TextRange.text = "My Publication" & vbTab
   .Header.TextRange.InsertPageNumber
   .Header.TextRange.InsertAfter NewText:=vbTab & MonthName(Month(Date)) & " " & Year(Date)
  End With
End Function
© www.soinside.com 2019 - 2024. All rights reserved.