Я использую следующий код для отправки текста в простой шаблон слова, который я установил только с одним MergeField в настоящее время, чтобы проверить, я могу заставить это работать.
код, я использую это следующим образом:Отправка текста в поля слияния почты в Microsoft Word 2010
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!");
Но ничего не происходит. Когда я перехожу через код, он доходит до приложения.Documents.Open, а затем, кажется, замерзает. Я считаю, что это связано с тем, что приложение не может найти документ Word. Правильно ли я отправляю полный путь файла к параметру имени файла? Если нет, как еще приложение будет искать мой шаблон Word?
Я собираюсь создать приложение winform, подобное этому. Спасибо, что предоставили эту идею. –