Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Управление Office - приложениями из Delphi!

Автор: KostiKL
Дата сообщения: 04.02.2003 09:49
Где достать Help на классы TWordApplication, TWordDocument и т.д.???
Автор: Felix
Дата сообщения: 04.02.2003 10:28
KostiKL посмотри любую литературу про программирование под VBA для Office, т.к. Delphi работает и интерфейсом VBA для данного класса. Хорошее описание было у Кенту
Автор: GreyGendalf
Дата сообщения: 05.02.2003 05:29
про классы из MSOffice инфу беру непосредственно из самого Office'а.
у меня вот здесь "drive:\Program Files\Microsoft Office\Office49\vbawrd9.chm",
ну и другие vba*.chm.
если их нет, нужно в настройке инсталляции Office'а указать "Справочные файлы" соответственно для всех компонент (Word, Excel ....).
ну и естественно, там все по англицкий... ;о)

на всякий случай, у меня MSO2000.
Автор: KostiKL
Дата сообщения: 05.02.2003 16:54
Покорнейше благоданю!
Но через OLE напрямую работать получается ... это не проблема! Да вот хотелось посмотреть поподробнее именно на разработанные сотрудниками Borland классы благополучно указанные выше!

Добавлено
Поправка для Office XP (то бишь Office10)!
Файлы лежат в папке drive:\Program Files\Microsoft Office\Office1033\vbawd10.chm",
ну и другие vba*.chm.
Почти все работает... Только на попытку WordApplication1.Activate почему то говорит: "Can't activate application!".
Вопрос: "Как запустить Word из Delphi?"
Автор: GreyGendalf
Дата сообщения: 06.02.2003 11:00
\DelphiX\Ocx\Servers\*.pas



Добавлено
KostiKL
что значит
Цитата:
Вопрос: "Как запустить Word из Delphi?"


у TWordApplication есть свойство AutoConnect.
ставишь его в True, ворд автоматически запускается вместе с приложением.
ставишь в False, тогда с коде пишешь типа

procedure TForm1.Button1Click(Sender: TObject);
begin
WordApplication1.Connect;
WordApplication1.Visible := True;
end;

если нужно вордовское окно пишешь Visible := True;

главное пр закрытии приложения, завершить работу ворда (если его окно скрыто)
свойство AutoQuit.
либо метод Quit.
только если ворд уже закрыли Quit выдает исключение => проверять наличие ворда (как - не знаю, но точно знаю, что можно, времени сейчас нет ковырять).

Автор: KostiKL
Дата сообщения: 06.02.2003 11:51
Thanks a lot!
Вчера вечерок посидел - все получается, как по маслу!
А чтобы Word запустить достаточно WordApplication1.Visible:= true!
Только вот мароки с OleVariant много! Чего он напрямую не хочет переменные преобразовывать? Все ему через OleVariant надо!
Автор: baraka
Дата сообщения: 15.02.2003 01:31
use Google: "Automating Microsoft Office"
Автор: JeanM
Дата сообщения: 24.02.2003 07:51
А у меня все получается через ОЛЕ (с Экселлем). Вчера вот изменил ширину ячеек и цвет текста в ячейке
Автор: Kins
Дата сообщения: 10.04.2006 12:21
Приветствую.
Подниму тему, мож кому пригодится.
Ибо сам, когда оное понадобилось, долго искал нужную инфу и собирал по кусочкам.
В итоге у меня получилось 2 файлика с набором минимальных функций для работы с Word & Excel:

WordFunc.pas - http://kinsmarino.narod.ru/soft/WordFunc.pas
ExcelFunc.pas - http://kinsmarino.narod.ru/soft/excelFunc.pas

Для заполнения шаблонов Word и Excel вполне достаточно.
Проверено и отработано в Delphi7+Office 2000.

Хорошая книжка по сабжу:
В.Корняков
"Программирование документов и приложений MS Office в Delphi"+CD -
после изучения данной книги, практически все вопросы отпадают.

ЗЫ
Ежели что нужно добавить, и не знаем как, поступаю следующим образом:
делаю макрос в word/excel, анализирую и пишу свою функцию.

Неплохо бы представлять себе обьектную модель Word/Excel.


Автор: DroN_S
Дата сообщения: 10.04.2006 15:42
проще всего работать с вордом/екселем через variant...
объявляешь переменную, создаёшь CreateOleObject('Excel.Application') либоCreateOleObject('Word.Application') и погнал что тебе нужно...
всю необходимуюинформацию можно найти при записи макроса...
удачи
Автор: Kins
Дата сообщения: 11.04.2006 09:11
Тоже вариант.
Через компоненты с закладки Servers мне лично не понравилось
Устаешь писать EmptyParam,EmptyParam,EmptyParam... и так 15 раз.. всего лишь при открытии документа...
Автор: Newbie
Дата сообщения: 11.04.2006 09:33
ИМХО самый правильный и хороший способ использовать COM через IDTExtensibility2. Это сложнее в плане программирования, но в плане концепции ПО правильнее работать на уровне Office.
Автор: hamelion2006
Дата сообщения: 22.11.2006 14:29
Люди, помогите.

1. Проблема с форматом чисел в Excel;
{For fr:=1 to ExRows do
begin
Range:=E.ActiveSheet.Range['B'+IntToStr(fr)];
Range.NumberFormat:='0.00';
end;}
Цикл должен просматривать стобец Б в таблице и менять формат числа. Но почему не работает.

2. Не получается сделать границы ячейки;
//Range.Borders[xlEdgeTop].LineStyle:=xlContinuous;

Автор: JonyBes
Дата сообщения: 22.12.2006 08:51
Подскажите запускаю ВОРД через CreateOleObject('Word.Application').
Ворд пускается, но не могу получить доступ к коллекции document
Что и где надо прописать чтобы коллекция document работала?

Вот кусок кода

uses ComObj;

var W:variant;

procedure TForml.ButtonlClick(Sender: TObject);
begin
W:=CreateOleObject('Word.Application );
W.Visible:=True;
W.Documents.Add;
end;
Автор: dborovik
Дата сообщения: 25.12.2006 09:54
Ребята, хэлп. Я в в объектно-ориентир-ом програм-ии не очень (в универе только на ассемблере контроллеоы программировал), не знаю к кому обратиться, может подскажите? Мне нужно на Delfi научится запускать любые *.exe-файлы, например, при нажатии кнопки, как мне это сделать? Буду признателен за любую информацию.

Добавлено:
Помогите! Как запустить НЕ офисное приложение, а например Far
Автор: vserd
Дата сообщения: 25.12.2006 15:29
dborovik
http://forum.ru-board.com/topic.cgi?forum=33&topic=6679
версия для печати.
И FAQ читай, там написанно.
Автор: Kins
Дата сообщения: 25.12.2006 16:15
JonyBes

И чего тебя в этом коде не устривает?
Тут апострофа не хватает закрывающего, остальное работает.

Цитата:
W:=CreateOleObject('Word.Application );

Автор: JonyBes
Дата сообщения: 27.12.2006 20:38
Как посчитать колличество открытых(а не запущенных) страниц.
пробую делать так:
W:=GetActivOleObject('Word.Application );
for i=0 to w.documents.count -1

Данная хрень возвращает только единицу. Как сделать правильее?
Автор: JonyBes
Дата сообщения: 02.01.2007 09:03
Всех с Новым Годом!

Хочу поставить прогресбар на время копирования файлов. Вот код :

word.ActiveDocument.SaveAs('\\Super\D\Base_UFSKN\Documents\'+patch+'\'+files);

Копирование идет по сети с клиента, т.ч. при большом документе процесс довольно долгий. Чтобы на клиентской части в это время не было паники - нужен индикатор процесса.

Страницы: 1

Предыдущая тема: [Interbase] Создание базы


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.