FILENAME字段中的限制目录(Microsoft Word)
FILENAME字段允许您将文档文件的名称插入文档本身。如果在该字段中使用/ p开关,则不仅会获得文件名,还会获得文件的完整路径:
{ FILENAME /p }
可以想象,路径名会变得很长,具体取决于硬盘驱动器的组织方式和文档的存储位置。出于这个原因,您可能要有选择地选择FILENAME返回的内容中包括哪些路径级别。例如,以下可能是文档的完整路径名:
C:\My Documents and Settings\Level1\Level2\Level3\Level4\Doc1.docx
您可能希望限制显示的目录级别,如以下两个示例所示:
\Level2\Level3\Level4\Doc1.docx \Level1\Level2\Level3\Level4\Doc1.docx
不幸的是,无法使用FILENAME字段本身来执行此操作;它只是不包括该功能。唯一的解决方案是创建一个宏,该宏确定路径名并将所需的级别插入文档中。例如,以下宏将在插入点插入当前文件所需的目录级别数:
Sub SelectPaths() Dim sPath As String Dim sName As String Dim sFull As String Dim sPart As String Dim sMsg As String Dim sTemp As String Dim iLevels As Integer Dim J As Integer sPath = ActiveDocument.Path If sPath = "" Then MsgBox "Need to save before running this macro.", _ vbOKOnly, "This Document Not Saved" Else sPath = sPath & Application.PathSeparator sName = ActiveDocument.Name sFull = sPath & sName sMsg = "This is the full path:" & vbCrLf sMsg = sMsg & sFull & vbCrLf & vbCrLf sMsg = sMsg & "How many levels do you want, counting " sMsg = sMsg & "from right to left?" sTemp = InputBox(sMsg) iLevels = Val(sTemp) sPart = "" If iLevels > 0 Then For J = Len(sFull) To 1 Step -1 If Mid(sFull, J, 1) = Application.PathSeparator Then iLevels = iLevels - 1 If iLevels = 0 Then sPart = Mid(sFull, J, 255) Exit For End If End If Next J End If Selection.TypeText (sPart) End If End Sub
如果文档尚未保存,则宏将不会运行。它实际上是通过计算从路径末尾开始的路径分隔符(斜杠)的数量来工作的。然后,它仅从该点开始插入路径的一部分。
当然,这样的宏的缺点是它不是动态的,就像字段一样。它只是插入文本。如果您以后更改文档的位置,或者更改文档名称,则需要重新运行宏以插入新的路径文本。
如果仅插入一部分路径的原因是当路径完整包含时路径太长,则可以采取另一种方法。为什么不简单地减小不重要的路径部分的点大小。例如,假设您使用FILENAME字段插入路径,它看起来像这样:
C:\My Documents and Settings\Level1\Level2\Level3\Level4\Doc1.docx
如果要隐藏“ Level2”左侧的部分,只需在字段结果中选择该文本,然后将其格式化为很小的磅值即可。如果将点的大小设置为6或7点,则经过强调的部分仍然清晰可见,但是完整路径不会在文档中占用太多线性空间。如果要使去强调的部分基本消失,则可以将点大小设置为1点。
注意:
如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)本提示(13292)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。 Word的旧菜单界面在这里: