Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 27 След.
Изменяется размер шрифта при выделении жирным.
 
Попробовал в Excel 2010, 2013, 2016 (64 разрядные версии) все два ваших файла. В масштабе 90% и 120% - размер шрифта не меняется. В 2007 попробовать не могу. Но думаю что это какой-то глюк, масштаб не должен влиять на размер шрифта.
«Бритва Оккама» или «Принцип Калашникова»?
Ссылка или число в формуле?, как проверить, есть ли в формуле, помимо ссылок, число(-ла)?
 
Цитата
rehotka написал:
А мне нужно
ваш файл пример, что вам нужно, мы так и не увидели. Покажите в примере  - как есть и как должно быть (почитайте правила форума).
«Бритва Оккама» или «Принцип Калашникова»?
Изменяется размер шрифта при выделении жирным.
 
Приложите файл-пример.
«Бритва Оккама» или «Принцип Калашникова»?
Встречи Экселистов в реале
 
Определились даты встречи 21 или 22 ноября, часов в 19-20, скорее всего в центре. Всех желающих приглашаем.
«Бритва Оккама» или «Принцип Калашникова»?
Встречи Экселистов в реале
 
Уважаемые коллеги, 20-24 ноября приезжает в Москву в командировку Андрей VG.
Планируем встретится.
Возможно кто-то захочет и сможет присоединится к встрече.
Предлагаю рассмотреть варианты: когда, где.
«Бритва Оккама» или «Принцип Калашникова»?
Приложения и/или Надстройки для Excel
 
а так же
Цитата
e_artem написал:
стоит оно своих денег или ...
«Бритва Оккама» или «Принцип Калашникова»?
Приложения и/или Надстройки для Excel
 
Цитата
e_artem написал:
Есть такое  приложение .
По вашей ссылке, на том же сайте, есть 15-дневная полнофункциональная пробная версия FastExcel V3 build 232.656.791.380
Скачайте, протестируйте и нам расскажите какие пряники там есть.
«Бритва Оккама» или «Принцип Калашникова»?
Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа (Open FileName As Binary и Get, Put через байт-массив)
 
Все просто, просматривается 2 варианта:
1. Оборачиваем SUB листа - функцией  в стандартном модуле или в модуле книги и готово. Пример приложил. При успешной загрузке - возвращается 1.
2. Переносим весь функционал из листа в стандартный модуль или модуль книги, меняем SUB  на Function, возвращаем 1, при успешном выполнении.
Изменено: bedvit - 31 Окт 2017 11:17:05
«Бритва Оккама» или «Принцип Калашникова»?
Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа (Open FileName As Binary и Get, Put через байт-массив)
 
Jack Famous, удалось реализовать через функцию листа?
«Бритва Оккама» или «Принцип Калашникова»?
Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа (Open FileName As Binary и Get, Put через байт-массив)
 
Цитата
Казанский написал:
упаковки файлов в коллекцию Variables
интересный вариант! Почитал. Выходит пока Excel впереди как Хранилище файлов.
Поделился и на киберфоруме.
Изменено: bedvit - 31 Окт 2017 10:44:35
«Бритва Оккама» или «Принцип Калашникова»?
Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа (Open FileName As Binary и Get, Put через байт-массив)
 
Казанский, Пробовал до 30 файлов и до 100 МБ в один массив. Суммарно до 250МБ выходило на лист - работает. Нужен тест или загуглить. Jack Famous, Очень просто, переносите лист в свою настройку и все, можете пользоваться. Можно ещё проще, копируете весь код на нужный лист и он становится байтовым хранилищем, в т.ч. и в надстройке. Если через функцию листа, нужно оформить Sub как Функцию, и возвращать к примеру 1 если все прошло штатно (нужно посмотреть на ограничения для функций листа), если все ОК - переименовать , вернуть 1.
«Бритва Оккама» или «Принцип Калашникова»?
Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа (Open FileName As Binary и Get, Put через байт-массив)
 
Исправил некоторые логические последствия, к примеру библиотеку ставим на распаковку, но указываем функции - безопасный режим (не переписываем файлы, последний параметр) - библиотека будет распакована в таком случае - только если нет такого файла или папки в выбираемом месте (или в папке по умолчанию). А при распаковке создается папка с названием архива. При запуске файлов, распаковке, в безопасном режиме - надо проверять сочетание этих факторов, наличие папок, файлов с одинаковыми названиями. Что оставлять, что заменять. Проверил - пока не нашел видимых отклонений от алгоритма.
Изменено: bedvit - 27 Окт 2017 18:07:46
«Бритва Оккама» или «Принцип Калашникова»?
Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа (Open FileName As Binary и Get, Put через байт-массив)
 
Можно накрутить всяких плюшек, но я решил - чем проще - тем лучше, главное основной функционал есть (еще подумаю на авто-архивирование при загрузке, как опциональный параметр) - но не знаю, лучше ли zip виндовый пакует, к примеру, чем мой RAR. Здесь если архив - значит с макс плотностью упаковки нужен. Нужно потестировать - как время будет (есно на zip архивах). RAR думал подключить, но есть малая доля вероятности, что не на всех машинах он есть.
«Бритва Оккама» или «Принцип Калашникова»?
Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа (Open FileName As Binary и Get, Put через байт-массив)
 
Всем привет!
Хочу поделится наработками, которые получились в процессе реализации своих задач.
Отдельная благодарность! Андрей VG, за любезно предоставленные исходники!, которые были несколько доработаны и дополнены для этих целей.

Хранение файлов и простенький файловый менеджер в листе Excel.
Сделал все максимально просто, для максимальной переносимости - переносим лист в другой файл, готово!
Нет форм, модулей уровня проекта, классов и т.д., все в модуле листа.
Работает стандартно через менеджер макросов или используя функции напрямую в вашем проекте/надстройке, обычном фале, поддерживающим макросы.

Андрей, сделал возможность подключить к любой книге, отключив в References ->microsoft scripting runtime (по умолчанию она выключена на обычных ПК, не хочу подключать через .GUID)

Функционал:
1.Загрузка любых файлов (в т.ч. архивов, которые можно распаковать автоматом при выгрузке)
2.Просмотр загруженных (имя, размер), при удалении, выгрузке.
3.Удаление
4.Выгрузка с параметрами (папка, файл, распаковка из zip (архиватор не нужен, средствами винды), открыть файл после выгрузки, перезаписать еще раз при распаковке)
Все эти параметры Optional, если их нет выполняется с параметрами по умолчанию.

Все исходники и пример прилагаю (с авто-распаковкой библиотеки из zip-архива и её запуска).
В загруженных файлах секретных данных и вирусов нет.
Изменено: bedvit - 27 Окт 2017 17:17:59 (Корректировки в коде)
«Бритва Оккама» или «Принцип Калашникова»?
Выделение 8значного числа из строки, (расположение его в строке различно - в начале, в конце, в середине...)
 
Была похожая тема в избушке. Вариант с количеством цифр до 20. Решение не моё, доделал до применимости с любым кол-ом знаков.

Моя цитата по той теме.
Отличное решение от "Светлый"! На его основе положу в коллекцию универсальный вариант для пользователей (от 1 до 20 символов), меняя текущий - знак "6" на нужный пользователю (кол-во искомых цифр).
=ПСТР(A2;ПОИСКПОЗ(6+1;ЧАСТОТА(СТРОКА($1:$999);ЕОШ(-ПСТР(A2&-(9^6);СТРОКА($1:$999);1))*СТРОКА($1:$999));)-6;6)
Изменено: bedvit - 23 Окт 2017 19:51:42
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Цитата
vikttur написал:
bedvit, размер вложения...
Цитата
Юрий М написал:
Про исключения уже обсуждали
Что нужно сделать? Разбить на 2 сообщения, библиотеки отдельно приложить? (на самом деле они есть в файле их просто нужно распаковать или забрать из "пользовательского темп" при авто-распаковке (выложил для ленивых). Готово, выложил библиотеки здесь.
Изменено: bedvit - 23 Окт 2017 09:43:52 (Добавил библиотеки из сообщения 52)
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Цитата
Андрей VG написал:
wrapper .Net - имеет накладные расходы...
плата за управляемый код (!?)
Цитата
Андрей VG написал:
Можно сразу бинарно хранить данные в CustomProperty листа (Open FileName As Binary и Get, Put через байт-массив).
Вещь! Немного под себя изменил, можно загружать, удалять, выгружать, смотреть загруженные файлы (в файле Excel). В прилагаемом файле все есть, набросал по-быстрому, если можно будет оптимизировать - с интересом приму предложения. Обгоняет решение от Игоря в 15 раз! (загрузка и выгрузка 100 МБ файла 10 сек. против 150 сек.) Андрей, ещё раз Спасибо!
Цитата
Андрей VG написал:
CustomProperties выглядит как коллекция, но по имени значение не возвращает
можно по-моему по порядковому номеру (!?).
ПО ТЕМЕ.Прилагаю конечный вариант (2 разновидности)
1.Excel .xlsb с самой быстрой функцией по этой теме (xll распаковывается автоматом) работает на Excel 2007 и выше как в х32 так и в х64 на всех ПК(должны быть включены макросы), но в файлах с этой функцией (внутри запакованной) - экспортный вариант
2.Библиотеки .xll подключить как надстройку (работает и без  включенных макросов), но на ПК на котором установлена (зато в любых Excel файлах, запаковывать и распаковывать библу в них не нужно) - экспортный вариант, стационарный вариант. Библиотеки можно распаковать из файла, для самых ленивых прилагаю ниже.

P.S. В функции реализовано описание, как для функции так и для переменной, есть СПРАВКА! Самые любопытные могут в ней отметится :)
Изменено: bedvit - 23 Окт 2017 09:41:22 (Библиотеки выложил в следующем сообщении для соблюдения размера вложений форума.)
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Цитата
Андрей VG написал:
С другой стороны. нет проще для кодирования
Согласен, после вашего сообщения зашел в проект на C# (скомпелировать новую библу) давненько не писал на С#, после почти чистого С и управления памятью, С# - как приятная прогулка (10-20 мин и новая структура и библа скомпилировани и главное работает и лишнего не жрет). Это как перейти с C# на VBA.
Утрирую немного, но после проекта на структуре XLOPER, ощущения такие :)
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Итого если обобщить:
-для работы именно в VBA, самый быстрый вариант пока выходит "Библиотека dll написанная на С (Си) и задекларированная в VBA (Declare)", возможно это не для всех задач, но пока нет других данных - считаем, что так.
-для работы с листом конкурентов нет у xll написанная на С (Си) через WINAPI (Thread-Safe), немного отстает xll созданная с помощью С# + Excel-DNA.
Но зато нет ручного управления памятью, никаких утечек памяти и "замечательных" XLOPER(XLOPER12). Но в скорости в 2 раза уступает лидеру.
«Бритва Оккама» или «Принцип Калашникова»?
Использование функций библиотеки на языке C в Excel
 
Для объективности:
Вариант "xll созданная с помощью С# + Excel-DNA" - многопоточный режим - [ExcelFunction(IsThreadSafe = true)]
RELEASE 2-е тестирование
VBA
Excel_xll-AddIn64-packed.xll (C#+Excel-DNA) 17,75

Лист-функция
Excel_xll-AddIn64-packed.xll (C#+Excel-DNA) (Thread-Safe) -3,035156 - 8 потоков
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Поменял алгоритм для библы на Excel-DNA (для потокобезопасного вычисления).
Андрей, вариант "xll созданная с помощью С# + Excel-DNA" - многопоточный режим - [ExcelFunction(IsThreadSafe = true)]
Результат:
RELEASE 2-е тестирование
VBA
Excel_xll-AddIn64-packed.xll (C#+Excel-DNA) 17,75
Лист-функция
Excel_xll-AddIn64-packed.xll (C#+Excel-DNA) (Thread-Safe) -3,035156 - 8 потоков

Всё же проигрывает ванильной xll, я думал будут примерно равны результаты.
Тест
Изменено: bedvit - 18 Окт 2017 12:29:23 (убрал лишние пробелы между строками)
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Проверил - нет, нужно потокобезопасные переменные делать
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Цитата
Андрей VG написал:
bedvit , круто!
Спасибо! не зря писал )
Цитата
Андрей VG написал:
ExcelFunctionAttribute.IsTrheadSafe = True?
Дамал, но в процессе реализации как-то потерялось..) Там как с памятью, Excel-DNA сам рулит? Видимо нужно писать и потокобезопасные переменные? В винрарной xll XLOPER12 - не любит работать, а любит пожрать-с... Если вручную не отжать у него память, всю сожрет :)
Изменено: bedvit - 18 Окт 2017 12:30:21
«Бритва Оккама» или «Принцип Калашникова»?
Использование функций библиотеки на языке C в Excel
 
Мои результаты тестирования:

Обработка 100 тыс. строк
Циклом в VBA (модуль RUS)
1.Функция VBA - 110 секунд, размер - в файле Excel.
2.xll созданная с помощью С# + Excel-DNA запуск через Application.Run - 19,3 сек., размер 543 КБ.
3.Библиотека dll написанная на С (Си) и задекларированная в VBA (Declare) - запуск просто в функции 11,69 сек. (лучший результат, т.к. работает напрямую минуя Application.Run), размер 84 КБ.
3. Собственно сам сабж - xll написанная на С (Си) через WINAPI (Thread-Safe) запуск через Application.Run -один поток - 18,16 сек., размер 15 КБ.

Переходим к работе напрямую с листом (через функции) копируем на 100 тыс. строк (Модуль TEST).
1.Функция VBA - 111,23 секунды, почти так же.
2.xll созданная с помощью С# + Excel-DNA 14,43 секунды - уже быстрее, все же это xll созданный именно для работы с листом.
3.Библиотека dll написанная на С (Си) и задекларированная в VBA (Declare) - 14,84 сек. (результат хуже, обертка Excel кушает)
3. Собственно сам сабж - xll написанная на С (Си) через WINAPI (Thread-Safe) - 8 потоков - 1,77!!! секунды (работа на 8 ядрах).

Ноги здесь и здесь. Там же и файл-тест.
Изменено: bedvit - 17 Окт 2017 21:45:14
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Казалось бы тема закрыта, но все была одна идея, вообщем её я реализовал.
Возможно ешё что-то оптимизировать? Кажется этот вопрос уже закрыт. Но...
Вот что получилось...
Стоило ли это усилий?

Итак, написав 3 разных библиотеки и одну функцию в VBA, выкладываю результаты тестирования.
Моя машина ОЗУ-16Гб DDR3, ЦП Core i7-3770 (8 лог.ядер).
Библиотеки для Excel x64 (начиная с 2007).

Результаты:
Обработка 100 тыс. строк
Циклом в VBA (модуль RUS)
1.Функция VBA - 110 секунд, размер - в файле Excel.
2.xll созданная с помощью С# + Excel-DNA запуск через Application.Run - 19,3 сек., размер 543 КБ.
3.Библиотека dll написанная на С (Си) и задекларированная в VBA (Declare) - запуск просто в функции 11,69 сек. (лучший результат, т.к. работает напрямую минуя Application.Run), размер 84 КБ.
3. Собственно сам сабж - xll написанная на С (Си) через WINAPI (Thread-Safe) запуск через Application.Run -один поток - 18,16 сек., размер 15 КБ.

Усилия по созданию xll начинают казаться напрасными.

Переходим к работе напрямую с листом (через функции) копируем на 100 тыс. строк (Модуль TEST).
1.Функция VBA - 111,23 секунды, почти так же.
2.xll созданная с помощью С# + Excel-DNA 14,43 секунды - уже быстрее, все же это xll созданный именно для работы с листом.
3.Библиотека dll написанная на С (Си) и задекларированная в VBA (Declare) - 14,84 сек. (результат хуже, обертка Excel кушает)
3. Собственно сам сабж - xll написанная на С (Си) через WINAPI (Thread-Safe) - 8 потоков - 1,77!!! секунды (работа на 8 ядрах).

...структура данных XLOPER(XLOPER12) - замечательна вещь!
Файл-тест здесь.
Изменено: bedvit - 17 Окт 2017 21:46:17
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Хорошо, убедили - в данном контексте, пожалуй, соглашусь. Спасибо за инфо! Есть некая мысль, если выгорит - выложу решение (осталось найти время на реализацию). Андрей ваш файл скачал - спасибо! Пока не  разбирал - вопрос с ходу - залить можно несколько файлов?
Изменено: bedvit - 2 Окт 2017 22:03:01
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Андрей VG, не могу открыть ссылку, сможете обновить? (вышел из недельного отпуска, раньше не смог посмотреть, спасибо!)
sokol92, не полностью могу согласится с вашей методикой теста. Функция CharToOem переводит строку в набор символов, определенный OEM (CharToOemW (Unicode) и CharToOemA (ANSI)). И? Как это соответствует функционалу моей функции? Строка в С это и есть набор символов, не уверен что
Цитата
sokol92 написал:
выполняющий аналогичный (даже чуть больший) объем работ
У меня идет еще и перебор и проверка каждого символа, формирование нового стека Char*-в (символов). В итоге судя по вашим тестам (с одинаковым временем работы моей функции и функции "CharToOemA" в стандарнтной библиотеки "user32.dll") , бОльшая часть времени выполнение - это ввод-вывод, меньшая - сам расчет (могу ошибаться, тестить некогда). Но за тест спасибо!
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
В действительности строки в С# не столь медленные (контейнер для char* C-го языка) особенно если включить unsafe, и указатели. Просто Библа больше и не вылезает в 100 КБ. и несколько медленнее, все же прямое обращение к памяти в С++. Но как вариант С# то же неплох. Особенно с кучей библиотек и наработок со свободной лицензией.
Цитата
Андрей VG написал:
Можно сразу бинарно хранить данные в CustomProperty листа
Андрей, очень интересно! есть ресурс - почитать? Ещё   сейчас хочу регистрировать функции в xll, что бы не декларировать в модуле - ищу адекватное описание, не занимались этой темой?
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Опрос по теме: жизнеспособен ли вариант со встраиваемой библиотекой(dll, xll) если ускоряется работа на порядок, но нужно написать библиотеку + добавить механизм запаковки\распаковки в файл excel? В итоге та же переносимость, как и у обычных функций (в т.ч. и своих надстройках) см.пример выше. Удобно ли это? Принимаю любые аргументированные мнения.  Что думаете отцы форума? Для стороннего пользователя разницы нет, или есть? (можно создать отдельную тему если вопрос выходит за рамки данной темы, но задал я его в следствии проработки именно этой темы)
Изменено: bedvit - 26 Сен 2017 23:11:12
«Бритва Оккама» или «Принцип Калашникова»?
удалить из ячейки все символы, кроме кириллицы
 
Протестировать можно в модуле "Rus" процедура "Test_Rus()".
Никаких С# и Excel-DNA нет. Только С/С++, только Хардкор (кто понимает о чем я, Char*, BSTR, LPCSTR, указатели и нулевой байт!-самая мякотка! не эти, ваши, безопасные/медленные строки в C#)
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 27 След.