次のコードを使用して、現在1つのMergeFieldだけで設定した単純な単語テンプレートにテキストを送信して、これを機能させることができるかどうかをテストしています。
私が使用しているコードは次のとおりです。
public static void ReplaceMailMergeField(string pWordDoc, string pMergeField, string pValue)
{
object docName = pWordDoc;
object missing = Missing.Value;
Word.MailMerge mailMerge;
Word._Document doc;
Word.Application app = new Word.Application();
app.Visible = false;
doc = app.Documents.Open(ref docName, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing);
mailMerge = doc.MailMerge;
foreach (Word.MailMergeField f in mailMerge.Fields)
{
if (f.Code.Text.IndexOf("MERGEFIELD \"" + pMergeField + "\"") > -1)
{
f.Select();
app.Selection.TypeText(pValue);
}
}
object saveChanges = Word.WdSaveOptions.wdSaveChanges;
doc.Close(ref saveChanges, ref missing, ref missing);
app.Quit(ref missing, ref missing, ref missing);
}
これをアプリケーションから次のように呼び出します。
string pWordDoc = @"C:\Users\Pete-Laptop\Documents\CMS Document Mangement\Word Template.dotx";
cDocument.ReplaceMailMergeField(pWordDoc, "fieldAddress1", "Put address here!");
しかし、何も起こりません。コードをステップスルーすると、app.Documents.Openまで到達し、フリーズしているように見えます。これは、アプリケーションが私のWord文書を見つけられないためだと思います。ファイル名パラメータに完全なファイルパスを送信するのは正しいですか?そうでない場合、アプリケーションは他にどのように私のWordテンプレートを見つけますか?