Модераторы: MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WordApplication, ExcelApplication, Работа с Word и Excel 
:(
    Опции темы
Albinos_x
Дата 9.5.2007, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



WordApplication не предоставляет такой возможности, делай через буфер, или добавить файл... можешь поэкспериментировать и попробовать грузить всё в OleVariat и оттуда уже вставлять...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 11.5.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



markivanov, по поводу работы через OleVariant в модуле ActiveX есть функции OleLoadFromStream() и OleSaveToStream() поэкспериментируй с ними...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 24.9.2007, 08:59 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108





--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Hoor
Дата 28.9.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.2.2007

Репутация: нет
Всего: нет



Вопросик такой: возникла необходимость вставки рисунка в Ворд из делфи

я вызываю там вордовский документ (он у меня W.ActiveDocument) и т.д
создаю image1 и загоняю его в файл, чтобы не морочиться с перерисовкой в Ворде
image1.Picture.SaveToFile('имя');

Затем открываю его в Ворде:
name:=W.ActiveDocument.Shapes.AddPicture('имя').Name;

Даю настройки верхнего левого угла.
W.ActiveDocument.Shapes.Item (name).Left:=Left;
W.ActiveDocument.Shapes.Item(name).Top:=Height;

Так вот Вопрос - как этот рисунок расположить в документе  в тексте ? Спасибо.
PM MAIL   Вверх
Albinos_x
Дата 29.9.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



она по умолчанию вставляется как в тексте...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 29.9.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



просто выбери место через selection куда тебе нужно вставить, а потом уже вставляй, без указания координат...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Hoor
Дата 29.9.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.2.2007

Репутация: нет
Всего: нет



Сорри, я кажется не совсем понял.  smile 
Если задать

"...просто выбери место через selection ..."

Так может быть?

W.Selection.End:=W.ActiveDocument.Range.End;
W.Selection.Start:=W.ActiveDocument.Range.End;
Если я даю
name:=W.ActiveDocument.Shapes.AddPicture('имя').Name;
то Ворд автоматом думает что координаты (0;0) и вставляет рисунок пперед текстом в начале первой страницы

Добавлено через 10 минут и 12 секунд

 smile 

попробовал не через свойство name, а просто

W.Selection.InlineShapes.AddPicture...

Заработало 
Огромное спасибооо
PM MAIL   Вверх
Albinos_x
Дата 30.9.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата(Hoor @  29.9.2007,  20:52 Найти цитируемый пост)
Так может быть?
W.Selection.End:=W.ActiveDocument.Range.End;
W.Selection.Start:=W.ActiveDocument.Range.End;

Ну зачум... просто доходишь до нужного места и вставляешь рисунок
Код

W.ActiveDocument.Shapes.AddPicture('имя');

или так:
Код
...
WordApplication1.Selection.InlineShapes.AddPicture('C:\Documents and Settings\зима.jpg',
                                                                                  EmptyParam, EmptyParam, EmptyParam);
...


координаты указывать не надо, т.к. когда ты их указываешь формат из "в тексте" меняется на "перед текстом".

а так он вставит по положению курсора...

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


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
B2_Russia
Дата 13.11.2007, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

Репутация: нет
Всего: 1



А как бы еще отобразить документ на своей форме?
PM WWW ICQ   Вверх
Albinos_x
Дата 15.11.2007, 03:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



OleConteiner


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
SmarTik
Дата 27.12.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 8.6.2007

Репутация: нет
Всего: нет



Доброго времени суток !
Может я немного не потеме, но такой вопрос: как получить index активного документа ?
Спасибо.


Это сообщение отредактировал(а) SmarTik - 27.12.2007, 18:31
PM MAIL   Вверх
Peha
  Дата 11.1.2008, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.1.2008
Где: C:\Украина&# 092;Северо-запад

Репутация: нет
Всего: нет



Очень интересная статья!!!  smile 
Мне она сэкономила кучу времени, т.к. начальнику захотелось сделать прогу для генерации кой-каких отчетов, но именно в Ворде...
И вот я столкнулся с небольшой проблемой (точнее пока нет времени на эксперименты), нужно создать табличку вида:
Код

+----------+----------+----------+----------+
|  Текст   |  Текст   |        Текст        |
+----------+----------+----------+----------+
|    Вот тут тоже кусок текста   |  Текст   |
+----------+----------+----------+----------+
|  Текст   |  Текст   |  Текст   |  Текст   |
+----------+----------+----------+----------+

Точнее, меня интересует, как можно обьединить несколько ячеек в созданной таблице в MS Word (у меня 2003)
Если кто сталкивался, помогите плиз... Свое решение выложу, как-только сам разберусь...

---------

все, нашел. Если кому интересно, код обьединяет ячейки в предпоследней строке с первой по пятую:
Код

 Table1.Cell(Table1.Rows.Count-1,1).Merge(Table1.Cell(Table1.Rows.Count-1,5));


Это сообщение отредактировал(а) Peha - 20.1.2008, 16:12
PM MAIL WWW ICQ   Вверх
mikolka
Дата 15.1.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 15.1.2008

Репутация: нет
Всего: нет



Доброго времени суток.
как можно узнать страницу на которой, сейчас находится курсор в ворде?
PM MAIL   Вверх
Jsn
  Дата 5.2.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.2.2008

Репутация: нет
Всего: нет



Цитата(Albinos_x @ 13.6.2006,  22:13)
часто задают вопрос как отключить сообщения выскакивающие в Excel:
Код
...
ExcelApplication1.DisplayAlerts[icid]:=false;
...

Помогите, плз, решить проблему:
создаю TWordApplication, в фоне(!) открываю файл (документ) и выдаю его на печать. Все работает. Но при ошибках  выскакивают интерактивные окна Word (например: "Во время последнего открытия документа произошла серьезная ошибка - восстановить?", "Размеры раздела выходят за границы печати" и т.п.), а мне надо, чтобы всё происходило именно в фоне! Пусть вызывает ошибку, но молчит!
Перепробовал кажется всё, начиная от DisplayAlerts... 
Вот кусок кода:
  Application1 := TWordApplication.Create(nil);
  with Application1 do
  begin
    try
      fn := aFileName;
      Visible := False;
      fn1 := False;
      fn2 := True;
      DisplayAlerts := wdAlertsNone; 
      Documents.Open(fn, fn1, fn2, fn1, EmptyParam, EmptyParam,
      EmptyParam, EmptyParam, EmptyParam, EmptyParam); // здесь бывают ошибки открытия
      fn := 1;
      Documents.Item(fn).Activate;
      PrintOut(fn1); // здесь ошибки печати
      Result := True;
    except
      on E: Exception do
         LogError('Error printing: ' + FormatDateTime(DateTimeString, Now) + ' '
           + aFileName + ' - ' + E.Message);
    end;
 end;

Delphi 5 и 7, Word 97-2000-XP - результат один; кроме TWordApplication пробовал и Word.Basic и OleObject - нет изменеий

PM MAIL   Вверх
Albinos_x
Дата 13.2.2008, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



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

SmarTik
не уверен, но попробуй так:
Код

ind:=WordApplication1.ActiveWindow.Index;


если не поможет, то пробуй перебором...

=============

mikolka
не могу пока сказать как, т.к сам ещё не нашёл... справка по VBA говорит, что есть объект Pages предствляющий собой массив страниц,
доступ к ним должен выглидить где-то так: 
Wapp.ActivWindows.Panes.Item(1).Pages.Item(1)

но с этим  у меня ничего не получилось..(

============

Jsn
1. используйте теги code
2. хм... странно... попробуйте так:
Код

Application1 := TWordApplication.Create(nil);
  with Application1 do
  begin
    try
// запускаем ворд
Application1.Connect;
...
// теперь говорим серверу, что события нужно игнорировать
      DisplayAlerts := wdAlertsNone; 
// выполняем остальные действия, например
      Documents.Open(fn, fn1, fn2, fn1, EmptyParam, EmptyParam,
      EmptyParam, EmptyParam, EmptyParam, EmptyParam); 
...



Это сообщение отредактировал(а) Albinos_x - 13.2.2008, 01:40


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.1670 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.