Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Объявить переменную в Делфи как Ексель  (Прочитано 19794 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sergius25
Гость
« : 12-12-2006 14:11 » 

Подскажите, пожалуйста, как объявить переменную с текстом в Delphi, для того чтобы с ней(а точнее с текстом) мог работать макрос из Excel?
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 12-12-2006 14:13 » 

не совсем понял.... чтобы Excel мог работать с "переменной в дельфи", надо на дельфи писать программу, которая будет поддерживать понятные экселю COM-интерфейсы... и я совсем не уверен, что это простая задача. обычно делается наоборот - программа, написанная на дельфи, работает с экселем.
Записан

PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #2 : 12-12-2006 14:38 » 

x77, могу пояснить, человеку надо передать текстовую строку в макрос (см. https://forum.shelek.ru/index.php/topic,10045.msg144289.html#msg144289)
Записан

Удачного всем кодинга! -=x[PooH]x=-
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 12-12-2006 15:13 » 

я всё равно не понял, что нужно Улыбаюсь из дельфи с Экселем можно работать примерно так:

Код:
var 
  Excel, WorkBook, Sheet: Variant;
begin
  Excel := CreateOleObject('Excel.Application'); 
  Excel.WorkBooks.Open(FileName,False); 
  WorkBook := Excel.WorkBooks.Item[1]; 
  Sheet := Workbook.Sheets.Item[3]; 
  Sheet.Cells[1,2]:='ASDFG'; 
  Sheet.Cells[2,2]:=230; 

и т.д.
« Последнее редактирование: 16-12-2007 13:45 от Алексей1153++ » Записан

sergius25
Гость
« Ответ #4 : 12-12-2006 18:42 » 

x77
В Delphi должна быть объявлена переменная с каким-либо текстом, с которым будет работать макрос, созданый в Excel. Т.е. в Дельфи нужно прописать код, который откроет файл, к примеру, f.xls, запустит макрос под названием WordRevers, созданный в этом файле. Это макрос должен изменить порядок слов в тексте на обратный. В тексте с изменённым порядком слов первая буква в первом слове должна быть заглавной, а первая и последняя буквы в последнем слове должны быть строчными! Каждое слово текста, с изменённым порядком слов, нужно вывести в отдельную ячейку в Excel (т.е. в файле f.xls).
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #5 : 12-12-2006 21:16 » 

sergius25, ну, в общем вся необходимая информация у тебя еще есть, если что-то не понятно, задавай конкретные вопросы.
Записан

Удачного всем кодинга! -=x[PooH]x=-
sergius25
Гость
« Ответ #6 : 13-12-2006 15:18 » 

PooH 
Как запустить макрос, прописанный в Excel, из Delphi и передать ему переменную с текстом?
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #7 : 13-12-2006 15:32 » 

Excel.Application.Run (MacrosName) - не пробовал?
Записан

sergius25
Гость
« Ответ #8 : 17-12-2006 17:50 » 

Спасибо! А как передать ему переменную с текстом?
Записан
sergius25
Гость
« Ответ #9 : 18-12-2006 13:53 » 

Цитата
Excel.Application.Run (MacrosName) - не пробовал?
При использовании выдает ошибку - "Параметр является обязательным"
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #10 : 18-12-2006 14:06 » 

sergius25, попробуй просто через запятую перечислить параметры:

Excel.Application.Run (MacrosName, Param1, Param2, ...)
Записан

sergius25
Гость
« Ответ #11 : 18-12-2006 18:21 » 

Вот код программы:

Код:
var
  Form1: TForm1;
  Excel, WorkBook, Sheet, s: Variant;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
  s:='test';
  Excel := CreateOleObject('Excel.Application');
  Excel.WorkBooks.Open('D:\f_.xls');
  Excel.Application.Run('WordRevers', s)
end;

При нажатии на Button выдает ошибку - "Недопустимое число параметров".
« Последнее редактирование: 16-12-2007 13:46 от Алексей1153++ » Записан
Igel
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 20-12-2006 17:39 » 

Прикольная идея. Афтор пиши исчо.
Если это типа какое-то задание (контрольная), то что-то заковыристое.
Если нет, то нужно посмотреть предметную область применения.
Уж больно сложная задача для простой перестановки буковок.
По поводу методик решения.
Нужно В дельфи создать строку, запустить макрос Экселя который эту строку обработает.
А) Возможно неправильно пересказана задача. Возможно просто передать строку в макрос экселя для последующей обработки. Это было-бы самое простое. И так во всей постановке Дельфи отводится роль стартера.
Б) Почитал другую ветку форума, понил, что пролетел со своим умствованием. Понятно, что Связку Ворд - Эксель реализовали. Поэтому предложение сделать ОЛЕ-сервер на дельфи, который бы содержал одино свойство - строка. Научить макрос Эксель работать с ним. В Дельфи сделать Сервер автоматизации - плевое дело.
В) Возможно еще куча вариантов хранения строки - Буфер, ДДЕ, что-то вроде с областью памяти можно зачудить, да банальный файл.
Записан

Ёжики, это не только ценные шкурки...
sergius25
Гость
« Ответ #13 : 21-12-2006 14:22 » 

Нда, в универе заработало!

Всем большое спасибо за помощь!
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #14 : 21-12-2006 14:31 » 

sergius25, что именно заработало? запуск макроса с параметрами, типа Excel.Application.Run (MacrosName, Param1, Param2, ...) ?
Записан

sergius25
Гость
« Ответ #15 : 23-12-2006 15:10 » new

Цитата
sergius25, что именно заработало? запуск макроса с параметрами, типа Excel.Application.Run (MacrosName, Param1, Param2, ...) ?
Да!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines