Пример за работа с Word чрез OLE
Не бъдете мързеливи да поставяте знаци плюс. Не ви пука - но аз съм доволен и ме кара да напиша нещо друго полезно.
Пример за използване на описаните функции е прост. При формиране на търговска оферта може да е необходимо да се опише списък с условия, да се добави изображение на мостра на продукт.
За да показвате отметки, активирайте тази опция в настройките на Word.
В моя пример създадох нов празен документ предварително, пътят до документа и картината са написани в текста. Не забравяйте да включите вашите пътища.
Тестван на Office 2007.
Текстът частично повтаря предишния пример. Някои променливи са преименувани според стандарта на Office: Текст --> селекция. Док --> Този документ.
Ето текста на модула:
Процедура ExecuteProcess() Експортиране
//Обект = GetCOMObject(PathToFile); Обект = GetCOMObject( "C:\Users\NKrylov\Desktop\Test.docx" ); // Показване на документа. Обект. приложение. видим = 1; Дума = Обект. приложение;
Този документ = Word. Документи ( 1 ); Този документ. активирате();
// Изключете проверката на граматиката и показването на информация за граматически грешки. Този документ. GrammarChecked = 0; Този документ. ShowGrammaticalErrors = 0;
// Подгответе променлива, която ще съдържа съдържанието на документа (текст). Избор = Дума. селекция;
// Изчистване на документ // Ctrl-A Селекция . Цялата история(); // Del Избор. Изтриване (1, 1);
// Намаляване на разстоянието между редовете. Избор. ParagraphFormat . LineSpacingRule = 0; // 1 по подразбиране Избор. ParagraphFormat . Интервал след = 0; // 10 по подразбиране
// Маркирайте документа. Това може да се направи ипо-рано в оформлението ThisDocument. Отметки. Add("Bookmark1" , Selection . Range()); Избор. ТипПараграф(); Избор. TypeText("34r3"); Избор. HomeKey(, 1); Този документ. Отметки. Add("Bookmark2" , Selection . Range()); Избор. EndKey(); Избор. ТипПараграф(); Този документ. Отметки. Add("Bookmark3" , Selection . Range()); Избор. ТипПараграф(); Този документ. Отметки. Add("Bookmark4" , Selection . Range()); Избор. EndKey();
// По този начин можете да работите с текст само в определена област на документа - това ще бъде заместител на метода Find-Execute. Този документ. Отметки ("Bookmark3"). Обхват. изберете(); Избор = Дума. селекция;
Отметка = Този документ. Отметки ("Bookmark3"); Таблица = Този документ. маси. Добавяне ( Bookmark . Range (), 1 , 5 , 1 , 2 ); Таблица. Редове (1). Клетки ( 1 ). Обхват. Текст = 1; Таблица. Редове (1). Клетки ( 2 ). Обхват. Текст = 2; Таблица. Редове (1). Клетки ( 3 ). Обхват. Текст = 3; Таблица. Редове (1). Клетки (4). Обхват. Текст = 4; Таблица. Редове (1). Клетки ( 5 ). Обхват. Текст = 5;
// След показване на таблицата ще се появи "допълнителен ред", изтрийте го // в резултат на това курсорът ще се премести в раздела 4 Избор . Преместване надолу(, 1); Избор. Изтриване (1, 1);
// Този текст ще се показва не от последната позиция на курсора, а в активната област. // в този случай, в таб област 2 ThisDocument . Отметки ("Bookmark2"). Обхват. изберете(); Избор = Дума. селекция; Текст = Избор. Обхват. текст; Избор. TypeText(Текст + "sdcsdcs"); // Отметката беше "нулирана" при показване на текста. Да възстановим. // Не можах да „победя“ този проблем (( // Въпреки чепрактика, отметката вече не е необходима. // Показване на текст два пъти в една и съща област - няма смисъл. Избор. HomeKey(, 1); Този документ. Отметки. Add("Bookmark2" , Selection . Range()); Избор. EndKey();
// В областта на отметките 4, оформете номериран списък Този документ. Отметки ("Bookmark4"). Обхват. изберете(); Избор = Дума. селекция; // активната (избрана) област ще започне // от маркер 4)
// Добавяне на текст "за експерименти" // 1 Селекция. TypeText("sdcsdcsdcsdc"); Избор. ТипПараграф(); // 2 Избор. TypeText("sdcsdcsdcsdc"); Избор. ТипПараграф(); // 3 Избор. TypeText("sdcsdcsdcsdc"); Избор. ТипПараграф(); // 4 Избор. TypeText("sdcsdcsdcsdc"); Избор. ТипПараграф(); // Изберете въведения текст Избор . Преместване нагоре(, 4, 1);
// Настройте шаблона на обекта галерия от списъци // Има няколко вида галерии от списъци, 2 - номерирани списъци ListTemplate = Word . ListGalleries ( 2 ). ListTemplates( 1 ). ListLevels( 1 ); // Форматът на изброителя на списъка е точка след номерационния знак ListTemplate. NumberFormat = "%1." ; // стил на числител - арабски цифри ListTemplate. NumberStyle = 0; // wdListNumberStyleStyleArabic // 4 - малки латински букви. // 2 - малки римски цифри. // 58 - малки български букви. // Шрифт = Template.Font; // можете да укажете форматирането на текста на списъка
// Прилагане на шаблона към избрания текст Селекция . Обхват. ListFormat . ApplyListTemplateWithLevel(Word.ListGalleries(2).ListTemplates(1));
// Прескачане до края на текста Избор. Краен ключ (6);
// Добавяне на изображение // Параметри: път къмфайл, създайте връзка към картината, запазете с файл Картина = Избор . Вградени форми. AddPicture( "C:\Users\NKrylov\Desktop\New.bmp" , False, True); // Задайте размера на Картина. Височина = 100; Снимка. Ширина = 150 ;
// За да зададете обвиване на текст, преобразувайте картината във форма Форма = Картина . ConvertToShape(); Форма. WrapFormat . Тип = 0; // по контура.