9

在 Office 2007 中工作,我想在我的文档标题中添加一个文件名字段。该文档稍后将是 PDF,因此我不想要扩展名。

我玩过 Insert -> QuickParts -> Field,但无济于事。我有一种直觉,它需要一个公式......

如果您能提供帮助,请提前致谢。

4

8 回答 8

12

你的感觉很对。

Insert > QuickParts > Field > FileName是要走的路,但正如您从下面的屏幕截图中看到的那样,您没有打开或关闭文件扩展名的选项。 替代文字 显示或不显示(莎士比亚风格)扩展名完全取决于 Windows 资源管理器设置来显示或隐藏已知文件扩展名。所以,要么你改变那个设置,要么你需要一些代码。

一个非常简单的宏如下:

Sub InsertCurrentFileName()
    Selection.InsertBefore Text:=Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 4)
End Sub

它所做的只是简单地去除“文件名字符串”的最后 4 个字符,例如“.doc”——如果你保护了“.docx”则“。” 将被保留。此宏也将运行一次,当文件名更改时您需要再次运行它。

也许您可以通过在文档标题中包含文件名来解释更多您想要实现的目标?您是否尝试在转换过程中使用文档标题中的文件名来设置某些 PDF 属性?为什么不使用文档标题?您以后需要 PDF 中的原始文件名 - 为什么?

还有两页可以帮助您解决问题(都依赖于宏......):

于 2010-10-13T08:00:53.343 回答
7

添加[标题]而不是文件名 ,并可能添加一些列出的其他文档属性

于 2014-03-02T19:20:28.567 回答
3

事实上,FileName 字段没有“仅基本名称”选项。

长期:功能要求

从长远来看,我已经向 Microsoft 提出了功能请求: https ://office365.uservoice.com/forums/264636-general/suggestions/13860672-for-word-create-a-basename-only-field-option -为了

我邀请您和其他访问此帖子的人为该建议投票。

短期解决方法

宏(VBA 代码)

正如@DennisG 所建议的那样,编写宏可能是最方便的工作。

自定义属性

但是您可能希望避免将任何宏与您的 word 文档相关联以避免安全问题(例如,如果您分发文档)。FileBaseName因此,另一种解决方法是使用硬编码值“MyDocumentBaseName”创建自定义属性:

创建 FileBaseName 自定义属性并将其分配给您的值:

  • 在 MS Word 中打开一个空白文档。
  • 将其保存为“MyTempReport.docx”。
  • 在带有 MyTempReport.docx 的 MS Word 菜单中打开 > 文件 [选项卡] > 信息 > 属性:单击 > 高级属性 ... > 自定义 [选项卡] ...
  • 输入“名称”:“FileBaseName”;“值”:“我的临时报告”。

在您的文档中插入自定义文档属性 , FileBaseName

  • MS Word 菜单 > 插入 [选项卡] > 文本 [组] > 快速部件 > 字段 ...
  • 从“字段名称”中选择“DocProperty”。
  • 从“字段属性”>“属性”:选择“FileBaseName”>“确定”。

您现在应该将“MyTempReport”作为一个字段插入到您的文档中。

限制:

  • 如果您重命名文件,这将不会反映在您的FileBaseName字段中。相反,您必须FileBaseName从 Advanced Properties ...(如上)手动更改属性。
  • 您必须在您想要的每个特定文档中创建此自定义属性。
于 2016-05-16T09:56:54.293 回答
3

创建一个类似的宏:

Dim f As String
f = Dir(ActiveDocument.FullName)
intPos = InStr(1, f, ".")
If intPos > 0 Then
    f = Left(f, intPos - 1)
End If
doc.Variables("BaseFileName").Value = f

插入一个字段,如:

插入 DocVariable 字段

完毕。

于 2016-05-27T12:50:41.787 回答
2
于 2020-06-18T18:03:57.403 回答
1

如上图所示插入文件名字段并保存为文件名。在打印预览模式下查看并返回编辑模式:现在应该显示文件名而不是 Document n

一旦你有了文件名,你就可以用不同的颜色格式化不同的部分:所以将 .extension 的颜色更改为文档的背景颜色(可能是白色)。

我在页脚中这样做了,因此 pdf 版本没有显示“.docx”。

于 2016-05-26T00:32:22.433 回答
0

只需在 Windows 资源管理器中隐藏文件扩展名。之后重新打开文档。然后导出它。该名称将没有扩展名。:)

于 2019-07-09T07:34:16.100 回答
0

为了使文档名称在字段中自动更新,您需要在宏中添加更多代码。此宏将在您每次打开文件时检查文件名,并将更新您希望在其中看到文件名的所有字段。

Sub AutoOpen()
' AutoUpdate Macro which creates filename without extension and updates fields
Dim aStory As Range
Dim aField As Field
Dim fname As String
        fname = ActiveDocument.Name
        fname = Left(fname, Len(fname) - 5) 'removes the last five characters from the filename (.docm)

            With ActiveDocument
                .Variables("fname").Value = fname
            End With

       For Each aStory In ActiveDocument.StoryRanges 'updates all fields in the document when you open the file

            For Each aField In aStory.Fields
             aField.Update
          Next aField
       Next aStory

    End Sub

创建此宏后,只需返回文档:

  • 在“插入”选项卡中选择“快速部件”,然后单击“字段”。 在“插入”选项卡中选择“快速部件”,然后单击“字段”。

  • 在字段选项中,选择 DocVariable,然后在字段属性中键入 fname,然后单击确定。 在字段选项中,选择 DocVariable,然后在字段属性中键入 fname,然后单击确定。

然后它将您的文件名(无扩展名)插入到您的文档中,每次打开文件时都会更新,并显示新的文件名。

于 2019-09-27T16:11:12.433 回答