저는 VSTO 및 OpenXML을 처음 사용했습니다. Word 추가 기능을 개발하고 싶습니다. 이 추가 기능은 OpenXML을 사용해야합니다. 추가 기능은 문서에 MergeField를 추가해야합니다. 실제로 ConsoleApp을 사용하여 MergeField를 추가 할 수 있지만 Word의 MergeField를 현재 열린 문서에 추가하려고합니다. 그래서새 MergeField를 삽입하기 위해 OpenXML을 사용하여 단어 추가하기
나는 ButtonClick
// take current file location
var fileFullName = Globals.ThisAddIn.Application.ActiveDocument.FullName;
Globals.ThisAddIn.Application.ActiveDocument.Close(WdSaveOptions.wdSaveChanges, WdOriginalFormat.wdOriginalDocumentFormat, true);
// function to insert new field here
OpenAndAddTextToWordDocument(fileFullName, "username");
Globals.ThisAddIn.Application.Documents.Open(fileFullName);
에서이 코드를 가지고 그리고 난 새로운 MERGEFIELD 추가해야하는 기능 만든 :
public static DocumentFormat.OpenXml.Wordprocessing.Paragraph OpenAndAddTextToWordDocument(string filepath, string txt)
{
// Open a WordprocessingDocument for editing using the filepath.
WordprocessingDocument wordprocessingDocument =
WordprocessingDocument.Open(filepath, true);
// Assign a reference to the existing document body.
Body body = wordprocessingDocument.MainDocumentPart.Document.Body;
// add text
string instructionText = String.Format(" MERGEFIELD {0} \\* MERGEFORMAT", txt);
SimpleField simpleField1 = new SimpleField() { Instruction = instructionText };
Run run1 = new Run();
RunProperties runProperties1 = new RunProperties();
NoProof noProof1 = new NoProof();
runProperties1.Append(noProof1);
Text text1 = new Text();
text1.Text = String.Format("«{0}»", txt);
run1.Append(runProperties1);
run1.Append(text1);
simpleField1.Append(run1);
DocumentFormat.OpenXml.Wordprocessing.Paragraph paragraph = new DocumentFormat.OpenXml.Wordprocessing.Paragraph();
paragraph.Append(new OpenXmlElement[] { simpleField1 });
return paragraph;
// Close the handle explicitly.
wordprocessingDocument.Close();
를하지만이 (가)에서 추가 사용할 때 무언가가 여기에 작동하지 않습니다 아무것도하지 않는다 도움을 주셔서 감사합니다.