Excel - Собствена функция с VBA
Автор |
|
dobrin7Вто, 25.11.08, 18:10 |
Благодаря ти много! Супер си! И линк-а, който ми подаде е много полезен! Кодът ти работи - просто съм допуснал една много тъпа грешка. Отдавна се мъча да направя това с работния лист и си мислех, че е невъзможно, докато не срещнах теб! | | kookkiСря, 14.04.10, 18:41 |
Нед ,благодаря за урочето ,много е полезно .Имам едно питане към теб. Не съм запознат със скриптове и се чудя дали мога да използвам С++ по подобен начин. Там обаче се декларират променливите и от там не ми е ясно . Всъщност ако пиша в компилатора , знам какво да правя , но ексела как го интерпретира ? По точно какво да променя в кода та да изглежда като VB (нямам предвид примерите ти ,а нещо по-общо), аз ще експериментирам и ще попрочета , но търся стартовата позиция. Дано да съм се изразил ясно и да си ме разбрал. | | boy4oСря, 14.04.10, 21:38 |
Щом си решил да прочетеш самостоятелно нещата, няма да ти развалям удоволствието. Само ще се опитам да ти пусна една муха. Всеки програмен език, който поддържа интерфейс към системните функции на Бозата е в състояние да използва напълно всички възможности на VBS. В това число и на всички програми от M$ Office. Още в Боза 2000 имаше вградена услуга за изпълнение на VBS и JS от външна програма (тук armenxxxxxxxxxx би могъл да се изкаже много по-компетентно). Във всеки случай, чел съм скриптове на Python и Rubby, които директно извикват определени функционалности на Офиса без изобщо да стартират съответните приложения. А последната версия на Gentee, с която съм запознат нарочно притежава улеснения в този план. Не се съмнявам, че някъде има и библиотека за С++, която предлага такива благинки, но не съм се интересувал специално. | | kookkiСря, 14.04.10, 22:53 |
Бойчо , благодаря ! Утре ще чета потърся в нета според твоите насоки. Armenxxxxx не се включва в моите питания, така че разчитам на вас. Иначе с директен код на С++ не става , пробвах. Точно както в С++ ako НЕ нулирам разни променливи , се получават странни резолтати, така и в ексела. Не ми се ще да се захващам с VB - аз още Си-то не съм научил....... То аз знам как да си го направя и с ексела , но за по-сложни действия , функцията е много по-прегледна и разбираема. Все пак се надявам и Недялко да искаже мнение . Пък утре ще си чета. Edit: ако открия топлата вода ще се похваля редактиран от kookki на 14.04.10 23:01 | | anonymousЧет, 15.04.10, 09:28 | RE: Excel - Собствена функция с VBA
” Бойчо , благодаря ! Утре ще чета потърся в нета според твоите насоки. Armenxxxxx не се включва в моите питания, така че разчитам на вас. Иначе с директен код на С++ не става , пробвах. Точно както в С++ ako НЕ нулирам разни променливи , се получават странни резолтати, така и в ексела. Не ми се ще да се захващам с VB - аз още Си-то не съм научил....... То аз знам как да си го направя и с ексела , но за по-сложни действия , функцията е много по-прегледна и разбираема. Все пак се надявам и Недялко да искаже мнение . Пък утре ще си чета. Edit: ако открия топлата вода ще се похваля „ Е е е я стига когато съм могъл съм писал.... Разгледай в нета за CreateObject("Excel.Application") или по точно линк .... Excel C++ Всичко зависи от това какво искаш да направиш и какво искаш да постигнеш. | | phrozencrewЧет, 15.04.10, 10:17 | | | kookkiЧет, 15.04.10, 10:36 |
Ииий ,ще падне четене. Благодаря ви за помоща. Armenxxxxxxx ,това си беше чиста провокация от моя страна ,за да се включиш. Помагал си ми доста пъти. Отново БЛАГОДАРЯ и на тримата | | phrozencrewЧет, 15.04.10, 12:23 |
Към темата трябва да се отблежи и още нещо интересно. Чрез VBA могат да се използват и всички скриптови езици, като Perl, PHP, Ruby, Rebol, Python, JavaScript и т.н. Разбира се за някои от тях има специални инструменти, с които да се създадат библиотеки с функции и ActiveX контроли. Например проекта PerlCtrl. Но всички интерпретируеми езици и конзолни приложения могат да се използват с вграденитe възможности за работа с конзолата във VBA. За пример сорс код на Perl , който се стартира от VBA: VBA-Макрос Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Function RunPerl()
Dim oWsc As Object
Set oWsc = CreateObject("WScript.Shell")
Dim oExec As Object
Set oExec = oWsc.Exec("perl C:\temp\myperl.pl StartParam")
While oExec.Status <> 1 ' Wait for process
Sleep 1000
Wend
'MsgBox ("STDOUT" + oExec.StdOut.ReadAll()) - чете стандартният изход STDOUT
'MsgBox ("STDERR" + oExec.StdErr.ReadAll()) - чете стандартният изход за грешки
RunPerl = oExec.StdOut.ReadAll() ' Взимаме резултата върнат от Perl-файла
Set oWsc = Nothing
'MsgBox ("End of macro")
End Function |
Perl-файл запазен в C:\temp\myperl.pl print "Hello World from perl... Argument[0]: ".$ARGV[0];
die "Error in Perl"; |
След поставяне на макрото може да се използва директно като вградена функция =RunPerl() в някоя клетка на Excel. | | kookkiЧет, 22.04.10, 13:54 |
Оказах се доста слаб с тия макроси. Правя ендо файлче за изпит по приложен софт и ми се ще линка за сваляне на една програма в документа да е радио бутон в такъв вид
Влизах в скрипт едитора ,но ми се изписва много голям код и не знам какво да го правя. Ако може някой направо да включи каквото там е нужно От поста поизтрих разрешените въпроси, че беше доста голям редактиран от kookki на 22.04.10 19:27 редактиран от kookki на 22.04.10 22:29 редактиран от kookki на 22.04.10 22:35 | | кака.лараЧет, 22.04.10, 22:03 |
Не ти работи скрипта, понеже е забранен от опцията за сигурност на Ескела. То си го пише на картинката. Трябва да свалиш сигурността на макросите на Low. През Tools/General/Macro Virusses Protection. | | Коментар |