Всем привет! Написал простую функцию, позволяющую получить из строки любые нужные символы. Пример прилагаю (в примере выбираются только цифры). Работает вполне шустро (в 4 раза отстает от самой быстрой специализированной функции) - плата за универсальность. Возможно можно ускорить, код я выложил. . Синтаксис простой, все символы перечисленные в шаблоне участвуют в формировании новой строки, знак "Дефис-минус" ("-"), задает последовательность, с -по (включительно). Все последовательности рассчитываются по стандартной таблице символов Unicode. Предлагаю обсудить удобно ли это? Может ли быть ответом на часто задаваемые вопросы, про как оставить какие либо символы, удалив другие? Удобно ли, то что она в оnдельном файле xll (плата за скорость), а не на VBA? Так же если тема заинтересует, предлагаю этот проект развивать сообща, все исходники открою.
Прямо пишите какие недостатки, что нужно добавить, и нужно ли это вообще. Тему и создал для получения оценки от участников форума.
bedvit, приветствую! Ещё одна очень крутая идея от вас, но всё, что лично меня пока останавливает, это непонимание, каким образом "зашить" ваш ".xll" в свою классическую ".xlm" - надстройку или, например, в другие книги. Да так, чтобы не думать о расположении файла ".xll"…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Добавил в справке (в функции "FilterUnicodeChar") ссылку на таблицу Unicode. Jack Famous, можно зашить с помощью Хранение файлов и файловый менеджер в файле(листе) Excel Или использовать как отдельную надстройку, установить всего раз, как обычную. Плюс второго способа в том, что если проект будет развиваться, будут добавляться новые быстрые функции и обновление будет заключаться в том, xто бы, просто, обновить файл xll. В первом способе нужно будет загрузить новый xll в свою надстройку.
Поэтому, если проект стартует, можно вместе будет выбирать имена функций (с точки зрения их функциональности), и далее уже не менять, что бы они были одинаковыми во всех версиях.
bedvit, я так и знал, что вы про менеджер скажете)) буду разбираться…
Мои готовые решения работают по-принципу "all-in-one", то есть всё уже должно быть подключено, а значит только "зашивать" через ваш менеджер. Для использование же вместе со своей надстройкой выберу "подключаемый" вариант кстати, подключил как обычную, но ничего не видно - как "активировать"?)))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit, подсказки при вводе функции (список доступных и аргументы)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit, блин, да В КОДЕ в коде ничего нет Типа ввожу в модуле "FilterUni", а он не подсказывает, что что-то есть, да и вы сами говорите, что вызов через App.Run, что означает, что не видно их. Иначе через Call можно было вызвать или вообще напрямую - так быстрее процентов на 30%
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Господа, ну вы чего в самом деле))) Дело в том, что я хочу использовать всю мощь функций в своих ПРОЦЕДУРАХ (кнопочных, например). Никак?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
А вот вы о чём. Может проще было был написать - подсказки для классов, интерфейсов, событий, методов, свойств и функций в VBA? Было бы сразу понятно. Можно. В VS.NET для функции интерфейса, например, нужно прописать атрибут System.ComponentModel.Description. Подозреваю, что и в C++ нужно сделать нечто подобное
Да можно. Даже делал. В СОМ.DLL Но надо различать СОМ.DLL, и C API Excel. Это совсем разные технологии, разные библиотеки, разные методы обмена информацией с внешним миром. Для C API Excel я незнаю, можно ли их вообще сделать. Да и зачем, вы же когда пользуетесь поздним связыванием, тоже не видите подсказок. Для этого есть API. У меня исходный код открыт, можно посмотреть какие аргументы у каждой функции. Они видны и в мастере функций. Для СОМ библиотеки я сделал все функции с подсказками при раннем связывании.
bedvit написал: а не получилось реализовать 4й вариант на Excel-DNA?
Привет, Виталий. Если быть, честным, то тот вариант и не пробовал, приношу свои извинения. Получается, что как бы напрасно подбил на исследования. Этот вариант интереснее, большое спасибо! Меня просто интересовал момент с работы с регулярками в Net и VBA, поэтому и пробовал. На практике же это, увы, мне скорее всего не пригодится. Вечером сидел разбирался с написанием com-классов, а то перед Алексеем похвалился картинкой. Решил изучить, как события добавлять в класс. Ну, и упёрся сейчас в то, что как-то криво проходит. Не получается создать объект - VBA вопит не найден файл, хотя в Object Browser всё есть. Года три назад, когда ковырял это дело, проблем не было. Буду пока копать в этом направлении.
Да, на C#, а вот насчёт - здорово. Всё же не очень. Скорее увиливаю от изучения BPMN и UML - по работе насущная потребность, но не интересно, COM интересно, но где его на работе применять? Коллизия интересов.
с моделированием и описанием бизнес-процессов близко не встречался. Даже не знаю насколько это интересно?) СОМ - для общего образования, совсем неплохо поизучать, особенно если интересно. Я так же изучаю Пригодится может в самых разных, СОМ поддерживающих продуктах. Да же если таких нет на работе, все равно знания как это работает - сильно помогает в дальнейшем.
Андрей VG, bedvit, доброго времени суток! Если для подсказок нужно так глобально влезать в код, то оно того точно не стоит, как по мне)))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit написал: Да можно. Даже делал . В СОМ.DLLНо надо различать СОМ.DLL, и C API Excel. Это совсем разные технологии, разные библиотеки, разные методы обмена информацией с внешним миром.
к #18 - спасибо за линк оттуда и все комменты по линку !! хороший ликбез по COM
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
bedvit, приветствую! Наконец-то решил плотно заняться вашей xll-надстройкой
1. Скопировал коды из Loader_05 в код листа своей xlam-настройки. Лист-хранилище назвал также "ByteSheet(Storage)" кодовое и видимое имя. 2. С помощью файлового менеджера добавил bedvitXLL(x64).xll в свою надстройку (загрузил файлом). Loader говорит, что он там есть.
Никак не могу использовать функцию. В отличие от загрузки Xll, как настройки - не видно функций даже в списке функций пользователя
Код
Sub sort()
Dim bedvitXLL As Object, arr(254), str$, i&
' создаём строку из всех символов
For i = 1 To 255
arr(i - 1) = Chr(i)
Next i
str = Join(arr, "")
Set bedvitXLL = CreateObject("BedvitCOM.VBA")
Application.Run "FilterUnicodeChar", str, "0-9"
'bedvitXLL.FilterUnicodeChar(str, "0-9")
MsgBox str
End Sub
Даже при подключении, как надстройки, когда на листе всё работает, непонятно, как использовать в коде — всё равно ошибка на Set bedvitXLL = CreateObject("BedvitCOM.VBA")
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit, спасибо вам ОГРОМЕДНОЕ! Суперуниверсальная, мегабыстрая и наикрутейшая плюшка!
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄