Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

макросы Excel


FrostFS ©   (2006-10-27 10:11:00) 

Здравствуйте. Как можно передать в Excel текст макроса на VBA без адаптации под Delphi , а в исходном виде и выполнить его?
К примеру:
Range("E1:G6").Select
   With Selection
       .HorizontalAlignment = xlCenter
       .VerticalAlignment = xlBottom
       .WrapText = False
       .Orientation = 0
       .AddIndent = False
       .IndentLevel = 0
       .ShrinkToFit = False
       .ReadingOrder = xlContext
       .MergeCells = False
   End With
   Selection.Merge


umbra   (2006-10-27 16:21:00) [1]

вот работающий код (Эксель 97):


uses ..., ComObj, excel97, vbide97, ....;
{.........................}
procedure TForm1.Button1Click(Sender: TObject);
const
 typelib = 'c:\Program Files\Common Files\Microsoft Shared\VBA\VBEEXT1.OLB';
 macrotext = 'Workbooks(1).Worksheets(1).Cells.Interior.Color = 15';

var
 xlapp, book, codemodule: Variant;
 sub: String;

begin
 xlapp := CreateOleObject('excel.Application');
 if VarIsClear(xlapp) then exit;
 try
   book := xlapp.Workbooks.Add;
   book.VBProject.References.AddFromFile(typelib);
   codemodule := book.VBProject.VBComponents.Add(vbext_ct_StdModule).CodeModule;
   sub := 'sub test()' + #13#10 + macrotext + #13#10 + 'End sub';
   if not VarIsClear(codemodule) then
     codemodule.AddFromString(sub);
   xlapp.Run('test');
 finally
   xlapp.Visible := True;
   codemodule := Unassigned;
   book := Unassigned;
   xlapp := Unassigned;
 end;
end;


Anatoly Podgoretsky   (2006-10-27 15:23:00) [2]


> И еще два вопроса - почему так плохо (точнее никак) документированы
> поставляемые Borland модули, касательно вкладки Servers
> и т.п.? Где взять описание всей этой огромной кучи функций
> и свойств?


Они не требуют документирования, там свойств раз два и обчелся, которые нормально работают по умолчанию
А вот если тебя интересует объектная модель документа, то за этим к Микрософту или в справку по офису, они тоже нормально документированы, просто их многие тысячи.


sniknik   (2006-10-27 13:40:00) [3]

> Не могли бы вы уточнить где разрешать Excel записывать чужие макросы?
ему это счас придется искать также как и тебе... (понятно что делалось давно) к тому-же, как он искал он сказал. и ему это уже не нужно, а нужно тебе... угадай кому искать???
совет, не задавай такого плана вопросов, с перекладыванием своих нужд на чужие выполняющие плечи... в ответ можеш "сколько заплатишь?" услышать, а не желаемое. + портится впечатление, пропадает желание с тобой общаться...  

> касательно вкладки Servers и т.п.? Где взять описание всей этой огромной кучи функций и свойств?
потому что это не борландовские компоненты по большому счету, а это и есть Excel/Word/... т.д. то что там написано, они являются приложениями серверами, а борланд дал только "точку входа" для обращения/управления ими.
т.е. для того чтобы документировать это все, надо переписать/скопировать справку оригиналов... а этого никто не любит (заметил уже по форуму? ;), ни копирующий ни тот у кого копируют.
т.что смотри прямо в оригинале (у Excel/Word/и т.д.).


FrostFS   (2006-10-27 12:42:00) [4]


> Выполнить это одно. Записать макрос - это другое. Как-то
> искал, как это сделать, сейчас не помню подробностей. Но
> точно помню, что в самом экселе, в каком-то меню надо разрешить
> внешним программам записывать макросы. Иначе Excel ругается.
>  Кстати, по этой ошибке я и нашел в инете, потом в справке,
>  где и что это за пункт меню.

evvcom, кажется только что столкнулся с тем о чем вы говорили. Не могли бы вы уточнить где разрешать Excel записывать чужие макросы?
И еще два вопроса - почему так плохо (точнее никак) документированы поставляемые Borland модули, касательно вкладки Servers и т.п.? Где взять описание всей этой огромной кучи функций и свойств?


evvcom   (2006-10-27 10:37:00) [5]

Выполнить это одно. Записать макрос - это другое. Как-то искал, как это сделать, сейчас не помню подробностей. Но точно помню, что в самом экселе, в каком-то меню надо разрешить внешним программам записывать макросы. Иначе Excel ругается. Кстати, по этой ошибке я и нашел в инете, потом в справке, где и что это за пункт меню.


Anatoly Podgoretsky   (2006-10-27 10:29:00) [6]

Вроде есть 12 перекрытых методов RunMacros - никогда не пробовал.


Наверх

Титульная страница Поиск, карта сайта Написать письмо