Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.03.2022, 11:05
MartGG MartGG вне форума
Прохожий
 
Регистрация: 09.03.2022
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию в Делфи 7 Word.WSave не работает?

Работаю с Word 2003 с обновлениями под Word 2010.
Ниже код в Делфи 7:
Код:
  VWord.WRun;
  for i :=1 to Length(FAdrWay) do  if FAdrWay[i] ='\' then pp :=i;
  FileWorda :=Copy(FAdrWay,0,pp)+'Для.doc';

  VWord.WOpen(FileWorda);

  MsWord.Visible := true;     // Word видно на экране
  MsWord.selection.TypeText('июнь 2022 г');   // запись текста в первой строке
                   //если найдена закладка, то
  if MsWord.ActiveDocument.Bookmarks.Exists('Сумма_3_1') then
       VWord.WSearch('Сумма_3_1');    // переход сюда
     // здесь расчет Суммы 3_1  и Сум 4.3
  info := 'Сум 3.1';                   //
  MsWord.selection.TypeText(info);   // запись текста
  MsWord.ActiveDocument.Tables.Item(1).Cell(4,3).Range.Text:='Сум 4.3';

     // добавляем к имени год
//  MsWord.WSave(FileWorda);  // не поддерживает в автоматическом режиме
Сообщение об ошибке в файле

Как сделать сохранение файла Word через Save ил SaveAs?
Изображения
Тип файла: jpg Error.jpg (7.3 Кбайт, 2 просмотров)
Ответить с цитированием
  #2  
Старый 09.03.2022, 15:15
MartGG MartGG вне форума
Прохожий
 
Регистрация: 09.03.2022
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Форум навел на мысль и я решил написать без процедуры.
Вставил
Код:
  MsWord.ActiveDocument.SaveAs(FileWorda);
- и все заработало

Вот процедура и описание переменных:
Код:
type
  TWord = class
  public
     procedure WSave(Name: string);      // 
  end;

var
  Form1  :TForm1;
  FileWorda :string;
  MsWord    :Variant;

procedure TWord.WSave(Name: string);
begin
  MsWord.ActiveDocument.SaveAs(FileName := Name);
end;

На такой подход руганье!!!
Почему?
Ответить с цитированием
  #3  
Старый 09.03.2022, 23:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. В сообщение об ошибке речь идет не об "автоматическом режиме", а об "объекте автоматизации", т.е. OLE Automation. Короче говоря, нет такого метода у объекта, ссылка на который хранится в переменной MsWord.

2. Вообще, сохранение вызывается у документа, а не у самого Ворда. Разберись с иерархией объектов. Т.е. вызов
Код:
MsWord.ActiveDocument.SaveAs(FileWorda);
и является правильным вариантом.

3. По поводу, почему не работает твой класс. Код полностью не приведен, однако предполагаю, что тут полное непонимание ООП. Да, можно создать класс. Только в том виде, как у тебя, для вызова метода необходимо еще создать экземпляр класса, и уже у него вызывать соотв. метод. Хотя в твоем случае данную процедуру можно объявить методом класса, т.к. она не зависит от каких либо ВНУТРЕННИХ данных экземпляра класса, и вызывать ее от класса, а не от объекта.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter