Delphi как открыть word

Обновлено: 02.07.2024

Текст

var range1, range2, range3, a, b :
OleVariant;

Первый
наш объект включает в себя весь текст документа, у второго мы ограничили
пределы 5-м и 15-м символами, третий представляет из себя весь последующий
текст документа, начиная с 5-го символа. Объект имеет несколько полезных
методов, например, с его помощью можем добавить текст в документ:

Это
мы вставили текст после выделенного Range. Точно также можем вставить текст и
перед ним, для этого служит метод InsertBefore(). Текст, заключенный в объекте
Range, можем получить так:

Кроме
того, с помощью Range можем изменить шрифт в пределах объекта. Пример:

var a, b, vstart, vend:
OleVariant;

j, ilengy: Integer;

for j:=0 to ilengy-8 do begin

Такая
процедура находит и выделяет нужный кусок текста.

Теперь
про Selection, представляющий из себя выделенный фрагмент документа. Если
выделения нет, это текущая позиция курсора в документе. С его помощью можем
вставить что-либо на место выделенного фрагмента, сделать выравнивание,
изменить шрифт. Он также имеет методы
InsertAfter() и
InsertBefore():

Форматирование
выделенного текста происходит аналогично Range, например:

Значения
его свойства Alignment может принимать значения wdAlignParagraphCenter,
wdAlignParagraphLeft, wdAlignParagraphRight, смысл которых очевиден. Имеются и
методы Cut, Copy и Paste, которые в пояснениях вряд ли нуждаются:

Убираем выделение с помощью метода Collapse. При этом необходимо указать, в
какую сторону сместится курсор, будет ли он до ранее выделенного фрагмента или
после:

var vcol: OleVariant;

Тогда
свертывание выделения производится по умолчанию, к началу выделенного текста.

Рисунки

Отступ
между краями рамки и текстом задается следующим образом:

А
теперь о масштабировании. Для этого достаточно длину и ширину рамки умножить на
одно и то же число. Например:

При
этом наша картинка в полтора раза пропорционально растянется. Точно также можно
и уменьшить, но делить, как и множить, следует на одно число. Растягивать длину
и ширину по-разному у меня лично не получалось. Задавать размер опять-таки надо
еще до вставки рисунка. Ну и, наконец, удаление рамки:

Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью. Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью.

Спасибо, попробую сегодня. А для чего тебе вообще из программы в Word пересылку делать? Отчеты что ли там формируют? Просто для этого вроде более удобные способы есть. Хотя заказчикам все подряд нужно. :-)

Интересует формирование отчётов не через OLE в ворд, а через создание XML документа, который ворд откроет.

Меня тоже интересует :) Попробую чего-нибудь написать по тому поводу

Очень интересный подход, а я в дельфи так и не смог этого сделать

Здравствуйте. Подскажите, пожалуйста, как подавить диалоговое окно на сохранение документа? Пол дня уже не могу сделать.

Про которое окно идет речь? Если про то, что выскакивает, когда Вы пытаетесь закрыть Ворд из своей программы, то при создании объекта надо написать так:
var Word: OLEVariant
begin
[. ]//создаем объект
Word.DisplayAlerts:=wdAlertsNone
end;
DisplayAlerts может принимать одно из следующих значений:
wdAlertsAll -1
wdAlertsMessageBox -2
wdAlertsNone 0

Вот привожу листинг из макроса, для вставки таблицы, то ничего не понятно.

Спасибо, через компоннеты не помогло, а тут все так просто)

srg91,
[code]Word.Quit;
UnAssigned(Word)[/code]

В Delphi-приложении вроде бы никак. Или я просто не встречал программ, способных такое сделать.

Понял, спасибо.
Еще вопрос есть.
RichEdit и RxRichEdit как-то странно ссылки в тексте отображают.
В открываемом RTF ссылки нормальные:
например:

а когда открываю RTF в своей программке, ссылки имеют такой вид:

Почему так? И можно ли привести их в нормальный вид?

Подскажите пожалуйтса.
У меня в программе нужно открыть Word на определенной закладке.
Когда работал в Delphi 7 я это сделал с помощью Ole,
Перешел на 2010 и не могу это сделать. И вообще нет компонентов с Word.
Подскажите плиз!

to Vlad
слушай подсади нубу как в ворде через делфи вставить ТАБ
такая команда не работает, а точнее компилятор не пропускает, команду взял из макроса:

[code]
var
word_stud:Variant;
word_stud.Selection.TypeText Text:=vbTab;
[/code]
За ранее спасибо!


подскажите пожалуйста:
мне необходимо записать из поля edit информацию в word при том, чтобы word он не открывался.
спасибо

можно просто не показывать видимость документа:
w.visible:=false;

В один документ надо вставить с определенной позиции весь текст другого документа. Как это сделать? Пишет слишком длинная строка.

НЕ подскажете можно ли из дельфи вставить и редактировать формулы в Word Т.е. работа с редактором формул. Или это не реально?

Через OLE-контейнеры вроде бы можно было, но сам никогда над такими вещами не работал

Понятно. Спасибо за отклик. Придется тогда шаблон использовать. А хотелось конечно все программно сделать

Подскажите, как можно создать базу данных, состоящую из документов word в delphi?

преподаватель задал вот такую задачку)

Помогите, не могу создать путь чтобы открыть документ

Word.Documents.Open(D:\. . . \. . . docx:=FilePath, ReadOnly:=true) Что тут не так.

Серега, всё не так. Во-первых почему первый параметр задом наперед стоит? Во-вторых, почему в пути к файлу кодировка сбита?

нахожу в документе нужное слово с помощью метода FIND объекта SELECTION. Как теперь перед найденным словом перевести каретку (аналогично нажатию клавиши ENTER)?
И ещё, как после нахождения искомого слова выделить следующий за ним фрагмент текста?
Заранее благодраю!

Спасибо! Я только только начал заниматься вопросами автоматизации обработки документов и сразу же встретился с массой трудностей. В инете ничего конкретного. Я был бы вам признателен, если бы вы подсказали мне какой-нибудь ресурс или ссылку на источник, где более или менее освещен данный вопрос (к слову, известная многим книга В.Корнякова мне не очень помогла).

Школа программирования Delphi

Портал DelphiSchool является бесплатным проектом, обеспечивающим пользователям быстрый и легкий доступ к урокам программирования на Delphi. Сайт позволяет научиться программировать на Делфи любому, кто хочеть писать свои программы, игры, Android приложения, программы для MAC OC или IOS. Кроме уроков Delphi и статей Delphi, на сайте доступны также и видеоуроки. Практически к каждому уроку, пользователю доступен исходник, изучив который, он сможет наглядно посмотреть как работает та или иная программа, написанная на Делфи. Кроме того мы постараемся прилагать к каждому материалу (статье, уроку, видеоуроку) файлы Delphi, которые будут помогать изучить предоставленный материал.

Каждый кто решил написать свою программу, создать свое приложение, научиться программировать и т.д., найдет на DelphiSchool статьи Delphi, уроки Delphi, видеоуроки Delphi, исходники Delphi, файлы Delphi, изучит компоненты Delphi, посмотрит Delphi примеры и многое другое абсолютно бесплатно. Все о Delphi программировании теперь собрано на одном сайте.
DelphiSchool

Основы работы с MS Word. Создание, открытие, сохранение и закрытие документа Word с помощью Delphi Функция, реализующая механизм доступа к OLE-объекту, находится в библиотеке ComObj.pas. Эта функция – CreateOleObject. Ее единственным аргументом является строка-идентификатор, а возвращает она ссылку на объект.
Доступ к приложению Word осуществляется, как правило, посредством основных двух объектов, Word.Application и Word.Document. Они же обеспечивают доступ и к другим объектам Word (текст, таблицы, кнопки, меню и т.д.). Наиболее легкий метод работы с COM-сервером Word базируется на использовании переменных типа Variant.
Давайте на примере рассмотрим создание документа Word помощью Delphi.
Для начала создадим новый проект (File | New | VCL Foms Application-Delphi) и поместим на него 4 кнопки (TButton). Поменяем заголовки (свойство Caption) этих кнопок на: "Создать документ Word", "Открыть документ Word", "Сохранить документ Word", "Закрыть документ Word". Как понятно из названий, мы будем открывать, создавать, сохранять и закрывать документ Word при нажатии на эти кнопки.
Чтобы начать работать с Word необходимо в модуле формы указать ссылку на использование библиотеки ComObj, поэтому в разделе uses мы дописываем ComObj. Также нам необходимо объявить переменную типа Variant. Давайте создадим обработчик события OnClick для кнопки "Создать документ Word" и напишем код:

Если сейчас запустить нашу программу и нажать на кнопку "Создать документ Word", то приложение Word будет запущено, но его окно не будет отображено на экране монитора. В память компьютера будет загружен объект Application, который обеспечивает доступ ко всем внутренним объектам, коллекциям и свойствам. Сейчас нас интересует свойство Visible этого объекта. Если значение этого свойства установить в True, то окно приложения Word станет видимым. Поэтому давайте допишем еще одну строчку в наш код:

Вот теперь если запустить программу и нажать на кнопку "Создать документ Word", то наше приложение Word станет видимым и отобразится на экране монитора.
Для того чтобы создать новый документ, необходимо использовать метод Add, коллекции Documents. Поэтому если мы хотим создать новый документ Word с помощью Delphi, необходимо написать:

В этом коде, после выполнения метода Add, будет создан новый документ, который отобразится в окне приложения Word. Обратите внимание, что видимым наш документ (w.Visible:=true) я делаю в самую последнюю очередь. При формировании отчетов, рекомендуется так делать. Это сокращает время создания отчетов и повышает производительность работы приложений.
С созданием документа Word в Delphi разобрались. Теперь перейдем к открытию документа Word. Для этого создаем обработчик события OnClick для кнопки "Открыть документ Word" и напишем следующее:

Синтаксис метода Open глядит следующим образом:

Давайте рассмотрим аргументы метода Open, их типы и функциональное значение:
FileName: string — путь и имя файла;
ConfirmConversions: boolean — False — не открывать диалоговое окно «Преобразование файла» при открытии файла, формат которого не соответствует формату Word (doc или docx)
ReadOnly:boolean — True — открыть документ в режиме «Только для чтения»
AddToRecentFiles: boolean — True, чтобы добавить документ в список недавно открытых документов.
PasswordDocument: string — пароль для открытия документа
PasswordTemplate: string — пароль для открытия шаблона
Revert : boolean — True, чтобы вернуться к сохраненному документу, если этот документ открывается повторно.
WritePasswordDocument: string — пароль для сохранения измененного документа в файле
WritePasswordTemplate:string — пароль для сохранения изменений в шаблоне
Format:integer — формат открываемого документа.

Обязательным параметром метода Open является только FileName, остальные параметры могут отсутствовать, как отсутствуют в вышеприведенном примере кода. Но если вдруг нам понадобится воспользоваться некоторыми из этих параметров, то их необходимо явно указать при вызове метода. Например, если мы решим открыть файл в режиме "Только для чтения", то код будет выглядеть следующим образом:


С открытием документа Word тоже разобрались. Переходим к сохранению документа. Для кнопки "Сохранить документ Word" создаем обработчик события OnClick и пишем:

Аргументы метода SaveAs, их типы и функциональное назначение представлены ниже:
FileName: String - Путь и имя файла
FileFormat - Число Формат файла
LockComments: Boolean - True - не сохранять комментарии
Password: String - Пароль, который будет использоваться при открытии документа
AddToRecentFiles: Boolean - True - добавить имя файла в список меню File
WritePassword: String - Пароль, который будет использоваться для сохранения документа
ReadOnlyRecommended: Boolean - True - в последующем документ можно открыть "только для чтения"
EmbedTrueTypeFonts: Boolean - True - при сохранении перевести шрифты документа в TrueType
SaveNativePictureFormat: Boolean - Используется для импорта графики из форматов, не поддерживаемых Windows. True - импортировать только графику, поддерживаемую Windows
SaveFormsData: Boolean - True - сохранить форму документа без текста
SaveAsAOCELetter: Boolean - Используется в версиях Word для компьютеров Apple Macintosh

При вызове метода SaveAs, как и при Open, можно задавать как один, так и несколько аргументов. Но, как правило, достаточно только первого аргумента (путь и имя файла).
Ну и последнее что мы рассмотрим – это закрытие документа. Закрыть документы можно с помощью метода Close коллекции Documents. Создадим обработчик события OnClick для кнопки "Закрыть документ Word" и напишем код:


После того как документ закрыт, можно закрывать и приложение Word:

К уроку (статье) Основы работы с MS Word. Создание, открытие, сохранение и закрытие документа Word с помощью Delphi прилагается исходник, посмотрев который, вы можете ознакомиться с полным исходным кодом программы и посмотреть как работает созданная программа. Исходный код сопровождается комментариями, благодаря чему вы сможете легко в нем разобраться. Но я настоятельно рекомендую делать все самостоятельно. Так вы лучше и быстрее усвоите то, о чем говорилось в этом уроке

Для того чтобы получить возможность скачать исходник Delphi к этому уроку, необходимо посетить сайт рекламодателя. После этого, появится ссылка на исходник Delphi к уроку Основы работы с MS Word. Создание, открытие, сохранение и закрытие документа Word с помощью Delphi
Нажмите на эту ссылку Ссылка

Читайте также: