ヘッダー/フッターの「FIELD」を置き換える方法は?
例: ファイル名と日付を含む Word doc ファイル。ファイル パスの代わりに - [FilePath] の代わりに C://Documents/Location/Filename.doc 、[Date] の代わりに 18/07/2013。
任意のテキストを範囲に置き換えることができます。
foreach (Microsoft.Office.Interop.Word.Section section in wordDocument.Sections)
{
section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Text.Replace(sourceDocPath, "[File Path]");
section.Footers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Text.Replace(sourceDocPath, "[File Path]");
}
これはファイル名では問題なく機能しますが、日付では、置き換える形式を推測することはできません。これはすべて、置換する正確なフィールド情報を取得できないためです。
以下のコードも使用できません
wordApp.Selection.Find.Execute(ref textToReplace, ref typeMissing,
ref typeMissing, ref typeMissing, ref typeMissing, ref typeMissing,
ref typeMissing, ref typeMissing, ref typeMissing, ref typeMissing,
ref replaceTextWith, ref replaceAll, ref typeMissing, ref typeMissing,
ref typeMissing, ref typeMissing);
私が今見ている唯一の方法は、可能なすべての日付形式を処理して置き換えることですが、これは私にとって良いアプローチとは思えません。
Storyrange を使用して与えられたコメントに従って更新します。
[DATE] という正確なフィールド情報が得られません。ストーリーの範囲を反復処理すると、セクション情報に関する wdstorytype が得られます。フィールド情報に関するものではありません。
foreach (Microsoft.Office.Interop.Word.Range tmpRange in wordDocument.StoryRanges)
{
string strtype = tmpRange.StoryType.ToString();
tmpRange.Find.Text = "18/07/2013";
tmpRange.Find.Replacement.Text = "";
tmpRange.Find.Replacement.ParagraphFormat.Alignment =
Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;
tmpRange.Find.Wrap = Microsoft.Office.Interop.Word.WdFindWrap.wdFindContinue;
object replaceAll = Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;
tmpRange.Find.Execute(ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref replaceAll,
ref missing, ref missing, ref missing, ref missing);
}
更新: ここで私を助けるもののように見えますが、機能していないようです。エクスポートする前に、ドキュメントオブジェクトに以下を使用させる方法を教えてください。
field.ShowCodes = true;