C#の単語2003 .DOT文書でMailMergeを実行する小さなライブラリを作成中です。Mail Merge Word 2003ヘッダーフィールドC#
:私はこれを試してみました。..foreach (Field mergeField in document.Fields)
{
if (mergeField.Type == WdFieldType.wdFieldMergeField)
{
string fieldText = mergeField.Code.Text;
string fieldName = Extensions.GetFieldName(fieldText);
if (values.ContainsKey(fieldName))
{
mergeField.Select();
application.Selection.TypeText(values[fieldName]);
}
}
}
しかし、これは、文書のヘッダーまたはフッターのフィールドを取得しません:私はそうのような文書の本文のフィールドをすべて取得し、交換することができますよ
subscriptionDocument.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Fields.Count;
フィールドが物理的に存在するにもかかわらず、ヘッダーフィールドを照会しますが、カウントが "0"に戻っています。
ヘッダーフィールドとフッターフィールドにも同様の効果が得られますか?
入力いただきありがとうございます。私はドキュメントのVBAエディタでこのスクリプトを試してきましたが、まだ0のカウントが返ってきていますので、これは私が使用している正確なドキュメントのアーティファクトかもしれません。ドキュメントを再作成して、そのような問題を回避できるかどうかを確認します。 –
これは、このような場合には常に良いappproachです(コードが正しいと思われる場合は、ドキュメントが原因である可能性があります)。 –