C#Word VSTO-导入文件后如何更新(某些)Word文档中的字段

2020-02-22 c# ms-word vsto

我创建了一个Word VSTO,其效果是列出某些单词文件,其中包含要插入到活动Word文档中的文本片段。用于此目的的代码是:

                string filename = “C:\somefile.docx”;
                if (File.Exists(filename))
                {
                    // get a reference to our open document
                    Document document = Globals.ThisAddIn.Application.ActiveDocument;
                    try
                    {
                        // our cursor position is selection
                        Selection sel = document.Windows[1].Selection;
                        // import fragment at selection point
                        sel.Range.ImportFragment(filename, false);
                        // move our cursor down one line
                        sel.Move(WdUnits.wdLine, 1);
                        // select our previously imported fragment

                        // update our ask field
                        document.Fields.Locked = 0;
                        document.Fields.Update();

                        if (sel != null)
                            Marshal.ReleaseComObject(sel);

                        //document.Saved = false;
                    }
                    catch (System.Exception es) // catch # 1
                    {
                        throw (es);
                    }
                    finally
                    {
                        //if (doc != null) Marshal.ReleaseComObject(doc);
                        if (document != null) Marshal.ReleaseComObject(document);
                    }
                }
                else
                {

                }

现在,我需要通过允许用户在要导入的片段中包括带有书签的Ask字段来增强操作,然后在导入后请用户更新信息。例如,如果导入的片段包含一个有效格式的Ask字段(即{ASK ExpDate“商品的到期日期是什么?” \ d None},然后像{REF ExpDate}这样引用书签),我会自动要求Ask字段弹出对话框并询问问题,就好像它是行中的下一个“询问”字段一样。当我只想执行导入的片段中包含的任何内容时,我当前的操作方式将更新文档中的所有字段。

因此,问题是如何在不触发文档中所有字段更新的情况下更新导入文件中包含的任何字段?

或者,也许可以更新选择对象以选择导入的片段,然后在该选择范围上更新字段吗?我该怎么办?

非常感谢您的期待 DWE

Answers

Related