在打印之前添加带文件名的页脚,而不删除现有页脚

问题描述 投票:1回答:1

我需要在Word 2010中创建一个宏,它将添加一个带有文件名的页脚,而不包含扩展名。

当您使用docvariable字段时,我找到了一个显示没有扩展名的文件名的代码:

Sub autofilenamefooter()

Dim fname As String
fname = ActiveDocument.Name
fname = Left(fname, InStr(fname, ".") - 1)

With ActiveDocument

   .Variables("fname").Value = fname

   .PrintPreview
   .ClosePrintPreview

End With

End Sub

我如何使用它来创建一个宏:

  1. 在打印之前使用文件名填充文档(以便每次打印文档时都会更新该字段)。
  2. 此外,新页脚(带有文件名)不会删除现有页脚(如果有)。这个要求是由于宏应该应用于我们的文档管理系统中的所有文档,并且一些文档已经有了我想要保留的页脚(例如带有徽标的公司文件)。

提前致谢!

word-vba
1个回答
0
投票

您拥有的代码不需要进一步的实现代码。只需在页脚中放置一个参考字段,即可以显示文件名。从“插入”选项卡中选择“快速部件”>“字段”,然后插入DocVariable字段。将字段命名为“Fname”(或与代码中的名称匹配的任何其他名称)。然后在您希望文件名所在的文档处于活动状态时运行以下代码。

Sub SetDocVariable()
    ' 28 Dec 2017

    Dim Sp() As String
    Dim Test As String
    Dim VarName As String
    Dim VarValue As String

    VarName = "Fname"
    With ActiveDocument
        Sp = Split(.Name, ".")
        ReDim Preserve Sp(UBound(Sp) - 1)
        VarValue = Join(Sp, ".")
'        VarValue = ""                  ' Use this line to show nothing
        On Error Resume Next
        Test = .Variables(VarName).Value
        If Err Then
            .Variables.Add VarName
            Err.Clear
        End If
        If .Variables(VarName).Value <> VarValue Then .Variables(VarName).Value = VarValue
    End With
End Sub

此代码将文件名写入文档变量,如果该变量不存在,则将该变量添加到文档中。当变量为空时,您插入的字段将不显示任何内容。如果变量不存在,它将显示错误。将文档变量设置为“”以没有错误,也没有文件名。

或许更好的方法是使用其中一个内置文档属性(或自定义文档属性,如果没有任何内置文件属性可以转移到此目的)代替文档变量,以及相应的参考字段(快速部件>文档属性)。您必须在属性对话框中键入文件名,但根本不需要任何代码。

顺便说一句,'FileName'引用字段(Quick Parts> Fields> FileName)以您想要的格式显示文件名,但不能将其设为空白。

© www.soinside.com 2019 - 2024. All rights reserved.