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

「.doc」などの「ファイル名文字列」の最後の 4 文字を削除するだけです。保存されます。また、このマクロは一度実行され、ファイル名が変更されたときに再度実行する必要があります。

ドキュメント ヘッダーにファイル名を含めることで達成したいことをもう少し説明していただけないでしょうか。ドキュメント ヘッダーのファイル名を使用して、変換中に PDF プロパティを設定しようとしていますか? ドキュメントのタイトルを使用しないのはなぜですか? 後で PDF に元のファイル名が必要ですか? なぜですか?

問題を解決するためのさらに 2 つのページ (どちらもマクロに依存しています...):

于 2010-10-13T08:00:53.343 に答える
3

実際、FileName フィールドには「ベース名のみ」のオプションはありません。

長期: 機能リクエスト

長期的には、 https ://office365.uservoice.com/forums/264636-general/suggestions/13860672-for-word-create-a-basename-only-field-option で Microsoft に機能要求を行いました。 -為に

あなたとこの投稿にアクセスしている他の人に、その提案に賛成票を投じることを勧めます。

短期的な回避策

マクロ (VBA コード)

@DennisG が提案したように、マクロを記述することは、おそらく最も便利な回避策です。

カスタム プロパティ

ただし、セキュリティ上の問題を回避するために、Word 文書にマクロを関連付けることは避けたい場合があります (たとえば、文書を配布する場合)。したがって、別の回避策はFileBaseName、ハードコードされた値「MyDocumentBaseName」を使用してカスタム プロパティを作成することです。

FileBaseName カスタム プロパティを作成し、値を割り当てます。

  • MS Word で空白の文書を開きます。
  • 「MyTempReport.docx」として保存します。
  • MyTempReport.docx を開いた MS Word メニューで > [ファイル] [タブ] > [情報] > [プロパティ]: [詳細プロパティ...] > [カスタム [タブ] ...] をクリックします。
  • 「名前」に入力します:「FileBaseName」; "値": "MyTempReport".

カスタム ドキュメント プロパティ をドキュメントに挿入FileBaseNameします。

  • MS Word メニュー > 挿入 [タブ] > テキスト [グループ] > クイック パーツ > フィールド ...
  • 「フィールド名」から「DocProperty」を選択します。
  • [フィールド プロパティ] > [プロパティ] から: [FileBaseName] > [OK] を選択します。

ドキュメントにフィールドとして「MyTempReport」が挿入されます。

制限:

  • ファイルの名前を変更しても、フィールドには反映されません。代わりに、高度なプロパティからプロパティFileBaseNameを手動で変更する必要があります... (上記のように)。FileBaseName
  • 必要なすべての特定のドキュメントで、このカスタム プロパティを作成する必要があります。
于 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 に答える