sergius25
Гость
|
|
« : 12-12-2006 14:11 » |
|
Подскажите, пожалуйста, как объявить переменную с текстом в Delphi, для того чтобы с ней(а точнее с текстом) мог работать макрос из Excel?
|
|
|
Записан
|
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #1 : 12-12-2006 14:13 » |
|
не совсем понял.... чтобы Excel мог работать с "переменной в дельфи", надо на дельфи писать программу, которая будет поддерживать понятные экселю COM-интерфейсы... и я совсем не уверен, что это простая задача. обычно делается наоборот - программа, написанная на дельфи, работает с экселем.
|
|
|
Записан
|
|
|
|
|
x77
Модератор
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
Глобальный модератор
Offline
Пол:
... и можно без хлеба!
|
|
« Ответ #5 : 12-12-2006 21:16 » |
|
sergius25, ну, в общем вся необходимая информация у тебя еще есть, если что-то не понятно, задавай конкретные вопросы.
|
|
|
Записан
|
Удачного всем кодинга! -=x[PooH]x=-
|
|
|
sergius25
Гость
|
|
« Ответ #6 : 13-12-2006 15:18 » |
|
PooH Как запустить макрос, прописанный в Excel, из Delphi и передать ему переменную с текстом?
|
|
|
Записан
|
|
|
|
x77
Модератор
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
Модератор
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
|
|
« Ответ #12 : 20-12-2006 17:39 » |
|
Прикольная идея. Афтор пиши исчо. Если это типа какое-то задание (контрольная), то что-то заковыристое. Если нет, то нужно посмотреть предметную область применения. Уж больно сложная задача для простой перестановки буковок. По поводу методик решения. Нужно В дельфи создать строку, запустить макрос Экселя который эту строку обработает. А) Возможно неправильно пересказана задача. Возможно просто передать строку в макрос экселя для последующей обработки. Это было-бы самое простое. И так во всей постановке Дельфи отводится роль стартера. Б) Почитал другую ветку форума, понил, что пролетел со своим умствованием. Понятно, что Связку Ворд - Эксель реализовали. Поэтому предложение сделать ОЛЕ-сервер на дельфи, который бы содержал одино свойство - строка. Научить макрос Эксель работать с ним. В Дельфи сделать Сервер автоматизации - плевое дело. В) Возможно еще куча вариантов хранения строки - Буфер, ДДЕ, что-то вроде с областью памяти можно зачудить, да банальный файл.
|
|
|
Записан
|
Ёжики, это не только ценные шкурки...
|
|
|
sergius25
Гость
|
|
« Ответ #13 : 21-12-2006 14:22 » |
|
Нда, в универе заработало!
Всем большое спасибо за помощь!
|
|
|
Записан
|
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #14 : 21-12-2006 14:31 » |
|
sergius25, что именно заработало? запуск макроса с параметрами, типа Excel.Application.Run (MacrosName, Param1, Param2, ...) ?
|
|
|
Записан
|
|
|
|
sergius25
Гость
|
|
« Ответ #15 : 23-12-2006 15:10 » |
|
sergius25, что именно заработало? запуск макроса с параметрами, типа Excel.Application.Run (MacrosName, Param1, Param2, ...) ? Да!
|
|
|
Записан
|
|
|
|
|