弗拉基米尔(Vladimir)知道他可以将文档的文件名放在页面的页眉中。不过,他希望仅在文件头中显示文件名的最后五个字符(不包括文件扩展名)。他正在寻找完成任务的最佳方法。

唯一的方法是使用宏。 Word中没有内置功能可以完成任务。宏需要确定文件名,获取所需的字符,然后将其填充到标题中。但是,看起来似乎很简单的事情却有潜在的并发症。例如,如果尚未保存文档,因此还没有文件名怎么办?如果文档已保存但文件名少于五个字符怎么办?

如果标头中已经有内容,宏应该怎么做?

如果用户在不显示标题的视图中查看文档,该怎么办?

为了处理此类问题,宏需要做出一些假设。

在此示例中,我们假设宏应仅用文件名的所需部分替换现有的任何标头。此外,宏可以将查看模式切换到“打印版式”视图,因此标题易于使用。结果如下:

Sub PartFilenameInHeader()

Dim sName As String     Dim J As Long

sName = ActiveDocument.Name     J = InStrRev(sName, ".")

If J > 0 Then         sName = Left(sName, J - 1)

If Len(sName) > 5 Then             sName = Right(sName, 5)

End If

If ActiveWindow.View.SplitSpecial <> wdPaneNone Then             ActiveWindow.Panes(2).Close         End If         If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _           ActivePane.View.Type = wdOutlineView Then             ActiveWindow.ActivePane.View.Type = wdPrintView         End If         ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader         Selection.WholeStory         Selection.Delete         Selection.TypeText Text:=sName         ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument     Else         MsgBox "Document has no filename extension."

End If End Sub

宏首先检查以确保文档具有真实的文件名(来自ActiveDocument对象的.Name属性)。如果是这样,那么它将从文件名中提取五个(或更少)字符。它检查以确保没有打开多个窗格,并且该文档处于“打印版式”视图中。然后,它选择标题中当前存在的任何内容,并将其替换为文件名中所需的字符。

请理解,在保存文档后应再次运行宏,如果您使用其他文件名保存文档,则应再次运行宏。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)上描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(13316)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。