Приложение Word Interop для записи текста в конец открытого документа - PullRequest
1 голос
/ 23 апреля 2011

Я пытаюсь написать приложение на C #, которое найдет документ открытым в MS Word и напишет некоторый текст в конец документа, используя взаимодействие слов.Возможно ли это?

Я знаю, что можно решить эту проблему, используя Process и Sendkeys, встроенные в .NET Framework, но я бы хотел решить эту проблему с помощью Word Interop, чтобы я мог добавить больше функциональности вниздорога (также sendkeys действительно решит проблему только в определенных особых случаях.)

Спасибо!

Обновление:

У меня работает следующее частичное решение:

    Application wordApp = new Application();
    wordApp.Visible = true;
    wordApp.Documents.Add();
    Range rng = wordApp.ActiveDocument.Range(0, 0);
    rng.Text = "New Text";

Но я бы хотел использовать уже открытый экземпляр слова вместо создания нового,Спасибо!

Обновление 2:

Я близок!Следующий код работает с отключенным UAC

    Application wordApp = (Word.Application)Marshal.GetActiveObject("Word.Application");
    Range rng = wordApp.ActiveDocument.Range(0, 0);
    rng.Text = "New Text";

Но я не уверен, как заставить его работать с включенным UAC.UAC не вызывает никаких ошибок или исключений, он просто не записывает текст в открытый документ.

Спасибо за помощь всем, пока конец не виден:)!

Обновление 3:

Просто попробовал еще раз с включенным UAC и все заработало ... странно.Тем не менее, если вам известны какие-либо полезные ресурсы о взаимодействии и UAC в целом, пожалуйста, оставьте ссылку здесь!

Ответы [ 3 ]

1 голос
/ 24 апреля 2011

Рассматривали ли вы использование Marshal.GetActiveObject("Word.Application") для запуска работающего приложения вместо создания нового?

1 голос
/ 23 апреля 2011

Определенно, Эван.Сборки взаимодействия Microsoft Office позволяют вам делать практически все из C #!SendKeys () - это проблема.

http://msdn.microsoft.com/en-us/library/15s06t57(v=vs.80).aspx

Полагаю, мне следует остановиться на SendKeys (): он больше не работает надежно, так как это был основной хакерский инструмент.Сборки взаимодействия MS Office позволяют выполнять огромное количество задач с каждым из компонентов Office.Я широко использовал их в MS Excel, а некоторые в Word, и вы можете делать практически все, что пользователь может делать программно.

0 голосов
/ 30 мая 2015

Вы можете попробовать ниже. Вот пример с вставкой изображения.

 WordC.Application wordApp = new WordC.Application();
                //  create Word document object
                WordC.Document aDoc = null;
                object readOnly = false;
                 object isVisible = false;
                 wordApp.Visible = false;
               //  wordApp.DisplayAlerts = false;
//docFileName is the filename with complete path. ex c://test.doc

                 aDoc = wordApp.Documents.Open(docFileName, Type.Missing, ref readOnly, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, ref isVisible, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
aDoc.Activate();
aDoc.InlineShapes.AddPicture(imgFilename, Type.Missing, Type.Missing, Type.Missing);

                aDoc.Save();
                aDoc.Close(Type.Missing, Type.Missing, Type.Missing);
                wordApp.Quit(Type.Missing, Type.Missing, Type.Missing);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...