#WordのクイックパーツとContentControl
OfficeのWordでクイックパーツを入力した場合、そのパーツをVBA上でContentControlとして扱うことが出来る。実際に書いてみる。
##発行日とタイトルのクイックパーツを用いたファイル保存マクロの作成
###このマクロでやりたいこと
クイックパーツの「タイトル」「発行日」を使っているWord文書に対して以下の処理を行う。
- 発行日を現在の日付に更新(yyyy/mm/dd)
- タイトルを取得し、ファイル名を「yyyymmdd_タイトル」として保存するダイアログを開く。
Wordマクロ_Normal標準モジュール
Public Sub UpdateDate()
Dim title As String
Dim control As ContentControl
'繰り返し処理でContentControlのtitleがクイックパーツ名と一致するか調べる。
'一致した場合、該当したクイックパーツを使って処理を行う。
For Each control In ActiveDocument.ContentControls
Select Case control.title
Case "発行日"
control.Range.Text = Format(Date, "yyyy/mm/dd")'発行日のクイックパーツの日付を更新
Case "タイトル"
title = control.Range.Text
End Select
Next
With Application.FileDialog(msoFileDialogSaveAs)'ダイアログの呼び出し
.InitialFileName = Format(Date, "yyyymmdd") & "_" & title 'ファイル名の設定
If .Show = False Then
Exit Sub 'キャンセル
Else
.Execute '保存
End If
End With
End Sub
#応用可能性について
クイックパークを使っていない場合でも、(組織などで)テンプレートで文書を作っている場合は、その形式からファイル名、日付の位置を選択して同じような処理が出来ると考えられる。