C# Word VSTO - Как обновить (определенные) поля в текстовом документе после импорта файла - PullRequest
0 голосов
/ 22 февраля 2020

Я создал 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 с закладкой, а затем, как только он будет импортирован, попросить пользователя обновить информацию. Например, если импортированный фрагмент содержит правильно сформированное поле «Спросить» (ie {ASK ExpDate «Какая дата истечения срока действия предложения?» \ D Нет} и затем ссылка на закладку похожа на {REF ExpDate}), автоматически я хочу Поле «спросить», чтобы открыть диалоговое окно и задать вопрос так же, как если бы это было следующее поле «Аск» в строке. В настоящее время я обновляю ВСЕ поля в документе, когда я хочу сделать только те, которые содержатся в импортированном фрагменте.

Поэтому вопрос заключается в том, как я могу обновить любые поля, содержащиеся в импортированный файл без запуска обновления для всех полей в документе?

В качестве альтернативы, возможно, можно обновить объект выбора, чтобы выбрать импортированный фрагмент, а затем обновить поля в этом диапазоне выбора? Как бы я это сделал?

Большое спасибо в ожидании DWE

...