Заменить текст в Word Interop 16 - PullRequest
1 голос
/ 28 марта 2020

https://docs.microsoft.com/en-us/visualstudio/vsto/how-to-programmatically-search-for-and-replace-text-in-documents?view=vs-2019

Microsoft не предоставляет полный код в документах. Но с этим мой код попробуйте текст ниже, не были заменены. Что не так и как сделать, чтобы сохранить замененное содержимое в файл с именем Word2.docx?

using Microsoft.Office.Interop.Word;

namespace ConsoleApp1
{
    class Program
    {


        static void Main(string[] args)
        {
            SearchReplace();
        }

        private static object missing; // <- Is this correct ?

        private static void SearchReplace()
        {
            Application application = new Application();
            application.Documents.Add("C:\\Users\\test\\Desktop\\word.docx");

            Microsoft.Office.Interop.Word.Find findObject = application.Selection.Find;
            findObject.ClearFormatting();
            findObject.Text = "find me";
            findObject.Replacement.ClearFormatting();
            findObject.Replacement.Text = "Found";

            object replaceAll = Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;
            findObject.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing, ref missing, ref missing,
                ref replaceAll, ref missing, ref missing, ref missing, ref missing);

            application.Documents.Save();
        }

    }
}

1 Ответ

0 голосов
/ 31 марта 2020

Я думаю, что у вас проблема с отсутствующим определением, и я добавил метод для сохранения:

namespace ConsoleApp1
{
    class Program
    {

      static void Main(string[] args)
      {
        SearchReplace();
      }


    private static void SearchReplace()
    {
        object missing = System.Reflection.Missing.Value;

        Application application = new Application();
        Microsoft.Office.Interop.Word.Document document = application.Documents.Add("C:\\Users\\test\\Desktop\\word.docx");

        Microsoft.Office.Interop.Word.Find findObject = application.Selection.Find;
        findObject.ClearFormatting();
        findObject.Text = "find me";
        findObject.Replacement.ClearFormatting();
        findObject.Replacement.Text = "Found";

        object replaceAll = Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;
        findObject.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing, ref missing,
            ref replaceAll, ref missing, ref missing, ref missing, ref missing);

        object filename = "C:\\savefile.docx";
        document.SaveAs2(ref filename);;

        document.Close(ref missing, ref missing, ref missing);
        document = null;
        application.Quit(ref missing, ref missing, ref missing);
        application = null;
    }

  }
}
...