Alex_Gur пишет:Это объект Marshal производит позднее связывание?
Позднее связывание — это термин, означающий, что определение типа переменной выполняется не на этапе компиляции, а при выполнении кода.
Marshall — это класс, содержащий инструменты для работы с неуправляемой памятью, кодом, типами и т.п. Углубляться сейчас в него не стоит. Нужно лишь запомнить, что есть метод GetTypeFromProgId, который позволяет получить экземпляр запущенного приложения по названию класса.
Alex_Gur пишет:следующий код:
wdApp.ActiveDocument.Range Range;
программа у меня не принимает. Пишет:
The type or namespace name 'wdApp' could not be found
Можно было бы, все же, вызвать, каким-то образом, активный документ?
Не совсем понятно, что вы пытаетесь этой строкой сделать. Объявить переменную типа Range? Поскольку мы не ссылаемся на библиотеку Word, то этот фокус не пройдёт. Все вордовские типы нам не доступны, поэтому их нужно объявлять как dynamic.
См. пример (для краткости даю только метод Main):
static void Main(string[] args) {
//Переменная для приложения
dynamic wdApp;
try {
//Пытаемся получить запущенный экземпляр
wdApp = Marshal.GetActiveObject("Word.Application");
}
catch (COMException) {
//если не получили, то создаём новый
wdApp = Activator.CreateInstance(Type.GetTypeFromProgID("Word.Application"));
}
wdApp.Visible = true;//Показываем приложение
//Переменная, которая будет содержать диапазон из активного документа
dynamic range = wdApp.ActiveDocument.Range;
//Печатаем в консоль текст активного документа
Console.WriteLine(range.Text);
while (wdApp.Visible) {
//Продолжаем выполнение программы, пока окно видимо
//хотя можно и закрыть.
}
}
После строки
wdApp.Visible = true;//Показываем приложение
объявляется переменная динамического типа (т.е. её тип будет определён во время выполнения программы) и в эту переменную записывается диапазон активного документа. Затем текст из этого диапазона печатается в консоль.
Мне кажется, стоит завести отдельную ветку для разбора более узких аспектов работы с Word посредством других языков.
Лучше день потерять — потом за пять минут долететь!