Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2012, 10:56   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А точно число колонок в таблице совпадает с числом полей в наборе данных?
И надо посмотреть как начинается нумерация в Ворде, может с нуля...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.06.2012, 13:42   #12
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

я думаю, вся проблема кроется в области, куда я хочу впихнуть таблицу. если я открываю чистый лист ворда, таблица добавляется без проблем. если я хочу таблицу воткнуть в конец 2 листа шаблона, появляется ошибка (см. п. 10)
вся проблема в строке
Код:
MsWord.ActiveDocument.Tables.Add(MsWord.ActiveDocument.Range, NumRows:=dm.people_who_send.RecordCount, NumColumns:=dm.people_who_send.FieldCount);
а именно в MsWord.ActiveDocument.Range
каким образом добавить таблицу в конец шаблона?

как можно посмотреть где начинается нумерация в Ворде?

Последний раз редактировалось kate158; 28.06.2012 в 13:57.
kate158 вне форума Ответить с цитированием
Старый 28.06.2012, 17:13   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот пожалуй это я не скажу... Надо читать про Ворд.
Попробуй почитать Корняков В.Н. «Программирование документов и приложений MS Office в Delphi»
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.06.2012, 17:19   #14
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

я Корнякова наверное уже без книги по памяти расскажу
Виталик, кажется, получилось. спасибо, тебе, добрый человек!
вот, собственно
Код:
procedure TForm1.Button9Click(Sender: TObject);
var
  Myrange: Variant;
  i, j: integer;
begin
  if not dm.PEOPLE_WHO_SEND1.IsEmpty then// проверка на пустоту датасета, если не пустой, то
  begin
    try w:= CreateOleObject('Word.Application'); except exit; end;
    w.documents.open('C:\Temp\shablon.doc');//открываем шаблон
    w.visible:= false;// ворд не видим
    w.selection.find.text:= '<Кому>';//ищем метку в шаблоне ворда
    if w.selection.find.execute then w.selection.text:= dm.autor1dolgn_name.AsString;// вставляем текст из датасета
    w.selection.start:= 0;
    w.selection.end:= w.activedocument.characters.count;
    w.selection.find.text:= '<Подразделение>';
    if w.selection.find.execute then w.selection.text:= dm.sectionname.asstring;
    w.selection.start:= 0;
    w.selection.end:= w.activedocument.characters.count;
     myrange:= w.activedocument.range(w.activedocument.range.end - 1, w.activedocument.range.end -
      1);// здесь мы показываем что хотим добавить таблицу в конец шаблона,myrange- область для вставки таблицы
    w.ActiveDocument.Tables.Add(MyRange, NumRows:= dm.people_who_send1.RecordCount, NumColumns:=
      dm.people_who_send1.FieldCount); 
    w.ActiveDocument.Range.InsertAfter(' ');
    Table:= MyRange.Tables.Item(1);
    Table.Style:= 'Сетка таблицы';
    dm.people_who_send.First;//цикл по датасету
    for i:= 0 to dm.people_who_send.RecordCount - 1 do
    begin
      for j:= 0 to dm.people_who_send.FieldCount - 1 do
        Table.Cell(i + 1, j + 1).Range.InsertBefore(dm.people_who_send.Fields[j].AsString);
      dm.people_who_send.Next;
      w.activedocument.saveas('C:\Temp\shablon1.doc');
    end; 
w.Visible:= True; end
  else
  begin
    showmessage('Нет данных!');
    abort
  end
end;

Последний раз редактировалось kate158; 29.06.2012 в 15:30.
kate158 вне форума Ответить с цитированием
Старый 28.06.2012, 18:10   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я Корнякова наверное уже без книги по памяти расскажу
Значит следующий шаг на луне - Хелп VBA Office. Там гораздо подробнее описано.
Цитата:
кажется, получилось.
Это хорошо )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
EhLib 2.5 -> 5.5 Yurk@ Компоненты Delphi 2 15.05.2012 00:29
Ehlib + *ico new player Компоненты Delphi 2 28.09.2010 14:56
EhLib проблемка sl963 БД в Delphi 1 01.06.2010 11:33
Компонент EhLib Михаил Юрьевич Компоненты Delphi 5 05.08.2009 11:40
Ehlib EdatabaseError Var17 БД в Delphi 1 21.07.2008 15:42