3

Word 2003 文書の MergeFields を置き換えるライブラリを作成しようとしましたが、置換するとフィールドに適用されたスタイルが失われることを除いて、すべて正常に動作します。それを保持する方法はありますか?

これは、フィールドを置き換えるために使用しているコードです。

private void FillFields2003(string template, Dictionary<string, string> values)
{
    object missing = Missing.Value;
    var application = new ApplicationClass();
    var document = new Microsoft.Office.Interop.Word.Document();

    try
    {
        // Open the file

        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]);
                }
            }
        }
        document.Save();
    }
    finally
    {
        // Release resources
    }
}

選択範囲で CopyFormat メソッドと PasteFormat メソッドを使用しようとしましたが、get_style と set_style も使用しましたが、程度はありませんでした。

4

1 に答える 1

6

選択範囲の上に TypeText を使用する代わりに、Field の Result プロパティを使用します。

          if (values.ContainsKey(fieldName))
          {
             mergeField.Result = (values[fieldName]);
          }

これにより、フィールドの書式設定が保持されます。

于 2009-10-19T23:45:27.713 に答える