Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

макросы Excel   Найти похожие ветки 

 
FrostFS ©   (2006-10-27 10:11) [0]

Здравствуйте. Как можно передать в 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


 
Anatoly Podgoretsky ©   (2006-10-27 10:29) [1]

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


 
evvcom ©   (2006-10-27 10:37) [2]

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


 
FrostFS ©   (2006-10-27 12:42) [3]


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

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


 
sniknik ©   (2006-10-27 13:40) [4]

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

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


 
Anatoly Podgoretsky ©   (2006-10-27 15:23) [5]


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


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


 
umbra ©   (2006-10-27 16:21) [6]

вот работающий код (Эксель 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;



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.012 c
15-1166433272
TUser
2006-12-18 12:14
2007.01.14
Сравнить два модуля


2-1166636937
olevacho_
2006-12-20 20:48
2007.01.14
проблемма с rediobutton-ами


2-1166806144
AlexanderMS
2006-12-22 19:49
2007.01.14
Мусор в памяти после жизнедеятельности программы.


2-1167126420
algol
2006-12-26 12:47
2007.01.14
банки SF2


9-1141572255
VolanD666
2006-03-05 18:24
2007.01.14
Collision Detection && SpeedFactor





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский