| Цитата |
|---|
по другому алгоритму |
исходя из практики - такой алгоритм очень долгий, обрабатывает 200-1000 символов в минуту, но из альтернатив наверное ничего и нету
Изменено: - 05.03.2025 16:54:51
|
20.02.2025 11:28:18
после установки x64 офиса - формулы полностью нагружают все 100% потоки процессора и справа снизу в строке состояния пишет количество нагруженных процессоров
но сам vba код работает только в однопоточном режиме, загружая процессор на 5-15% есть ли какие-то опции по включению всех потоков в vba? бывают ли вообще многопоточные компиляторы в программировании?
Изменено: - 20.02.2025 11:37:01
|
|
|
|
|
|
19.02.2025 07:48:27
![]() как объединить несколько ячеек в одну с сохранением всех цветов? кто-то прорабатывал такую процедуру? тут есть два момента: 1. обрабатывать нужно посимвольно, т.к. в исходных ячейках может быть несколько цветов текста внутри каждой ячейки, т.е. цвет текста нельзя считывать со всей ячейки 2. этот код имеет максимальную длину 255:
одно решение есть , но страдает от ошибки переполнения 255 и не учитывает разный цвет внутри исходных ячеек
ещё одно из решений есть , но страдает от ошибки переполнения 255 Сцепляет с сохранением форматирования выделенные строки и помещает результат справа от выделения. Ячейка куда записывается результат сначала затирается
пока что думаю алгоритм такой: v1 1. сначала выгрузить сырое сцепленное Value в результирующую ячейку 2. пройтись по исходным ячейкам и изменение цвета текста записать в словарь или коллекцию в виде [номер символа, индекс нового цвета] 3. покрасить итоговый сырой результат на основе этого словаря или коллекции 4. если нужно сохранить не только цвет, но и форматирование - то писать кодировку вида Font_Size_Bold_Underline_italic_Color, например Arial_12_NoBold_UL_Noit_FFFF00, хотя в данном случае возможно проще будет сделать на многомерном массиве, чтобы не сплитать и не расшифровывать эту кодовую строку форматирования v2 а можно так: 1. сцепить сырой текст из всех исходников в результат 2. покрасить текст функцией выше, заквотив в ней две строки - 1. предочистка результирующей ячейки и 2. посимвольное впечатывание символа в результирующую ячейку v2 успешно отрабатывает на длине более 255 таким образом можно переделать пару строк в ConcatenateWithFormat и получить процедуру, которая успешно отработает и на разных цветах и на длине более 255, вдобавок можно добавить кастомный сепаратор между значениями исходных ячеек и фильтр по ячейкам смежные темы:
Изменено: - 19.02.2025 09:42:04
|
|||||||
|
|
|
|
02.08.2024 18:48:05
только если открыт рабочий стол через InvokeVerbEx, то Shell.Explore уже не откроет новое, а просто активирует. 1. если вручную открыто 3 рабочих стола, потом InvokeVerbEx откроет 4-ое окно (игнорируя ранее открытые), и Explore активирует это 4-ое окно 2. если вручную открыто 3 рабочих стола, и сразу Explore, то открываются новые окна таким образом - у окна, открытого InvokeVerbEx , некий особый статус
Изменено: - 02.08.2024 18:49:50
|
|||
|
|
|
|
02.08.2024 01:31:14
, сработало
ниже: обычная папка - это та которая не нужна (если вручную идти в мои документы\рабочий стол) уникальная папка с синей иконкой - тот рабочий стол, который нужен - если тыкать на рабочий стол в боковом меню любой папки 1. если открыта "обычная" папка рабочий стол - то открывает всё равно новое окно с уникальной синей иконкой 2. если уже открыто хотя бы одно окно с уникальной иконкой - то активирует его 3. если открыто несколько окон с уникальной синей иконкой - то активирует самое раннее открытое 4. если не открыто ни одного окна с уникальной синей иконкой - то открывает новое нужное окно таким образом - это лучше, чем всё, что у меня было до этого, т.к. первая команда которая умеет открывать рабочий стол с синей уникальной иконкой и всё ещё - эта команда не может открыть 3 отдельных окна. есть такая же команда, только с принудительным открытием нового окна? нашлась только
а список команд;
не показывает ничего интересного в духе "new window"
не делает ничего -- что интересно, в кавычках "CreateObject("Shell.Application").Namespace(0).Self.InvokeVerbEx" гуглится и яндексится только 1 результат
Изменено: - 02.08.2024 10:02:33
|
|||||||
|
|
|
|
01.08.2024 04:09:30
Как открыть рабочий стол? (vba, winapi, win7)
по какому адресу он находится? в идеале бы получить CLSID в реестре прописан "Desktop" ::{00021400-0000-0000-C000-000000000046}, но он никуда не ведёт "file:///C:/Users/Admin/Desktop" открывает папку с рабочим столом (на картинке слева) а нужно именно виндовый рабочий стол с уникальной иконкой (на картинке справа) ![]()
Изменено: - 01.08.2024 04:24:11
|
|
|
|
|
|
05.12.2023 11:54:49
как его подключить к офису выше 2003 ? через VBA - Tools - References - Browse - IndenterVBA.DLL - не подключается
Изменено: - 05.12.2023 11:55:56
|
|||
|
|
|
|
05.12.2023 09:46:48
как автоматически проставить табуляцию или отступы в vba коде?
есть ли такая кнопка в самом VBA в экселе? если нету, то есть ли онлайн сервисы куда можно вставить сырой код и забрать код с отступами? есть такой код:
нужно сделать из него такой:
вручную в каждой строке Tab и Shift+Tab не предлагать
Изменено: - 05.12.2023 09:50:26
|
|||||
|
|
|
|
18.08.2023 09:55:55
тут есть переводчик от MS как надстройка, но нет магазина в 2010 офисе чтобы ее установить вот перевел через
Изменено: - 18.08.2023 09:57:17
|
|||||
|
|
|
|
22.05.2023 05:08:17
а то
![]()
хотя наоборот есть - оно без короткого знака
Изменено: - 22.05.2023 05:41:26
|
|||||||||
|
|
|
|
21.05.2023 19:43:34
вот три строки, 1 выдаст ошибку, а 2 и 3 не выдадут хотя непонятно как это работает - если плюс изменил ситуацию, значит тип мат операции имеет значение а дальше в 3й строке мы убрали нолик около лонга - на лонг a1 этот ноль вообще не влияет, а каким образом он влияет на a2 тоже не понятно. т.е. если учитывается общий результат справа от равно, то наличие лонга должно решать все проблемы, т.к. справа 10 нулей, а у лонга 18
за всю практику первый раз столкнулся напрямую с перемножением в vba и это всё сделано как то криво косо неудобно да еще если часто менять типы данных у переменной, то выскакивает ошибка о несоответствии. причем если ты менял с 1 на 10 - то эта ошибка никак не обойдётся, пока не введешь третье число типа 200, тогда он успешно обновляет тип данных (MS 2010) в общем в любой непонятной ситуации пиши CDbl() или CLng() и это в большинстве случаев поможет
Изменено: - 21.05.2023 19:49:44
|
|||||||
|
|
|
|
21.05.2023 13:00:51
почему только неполная "М" ? ты что-то скрываешь? в чём-то замешан? щас бы в инете к никам придираться. ikki то очень осмысленный ник, намного круче йцукена надеюсь регистрацию на форуме по тилибону скоро прикрутят? + геолокацию ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- последние две строки выдают ошибку как полечить?:
тут последняя строка тоже выдает ошибку при использовании массива как лечить? только через a1 = clng(a00(0)) * 100 * 100 ?:
и так тоже не хочет:
Изменено: - 21.05.2023 13:52:20
|
|||||||||
|
|
|
|
17.05.2023 06:37:19
загружаю файл в string
потом делю на массив строк обрабатываю каждую строку склеиваю txt = txt & s сохраняю через ADODB.Stream и вот именно на txt = txt & s идёт накопительная задержка если txt уже длинная (более 10000 строк), то к ней долго клеится новая строка а через FSO.OpenTextFile ForAppending сохранять неудобно, т.к. поддерживает очень мало кодировок вот таймер по каждому склеиванию + общая длина переменной txt: в последнем столбце видно как падает скорость склеивания симв/сек
вопрос: 1. есть ли у ADODB.Stream функция дозаписи в имеющийся файл? 2. если нету, то как правильно клеить длинные строки? проверять на длину txt и при превышении условных 200 000 использовать новую чистую string txt[2] txt[3] , а потом склеить txt[1] txt[2] txt[3] перед сохранением в файл ?
Изменено: - 17.05.2023 07:27:05
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
08.04.2022 14:35:06
Как вариант тогда можно использовать какую-нибудь программку-посредник и из макроса через Shell запускать/обновлять её с параметрами:
Таким образом она будет отображать ход выполнения макроса в своём окне на панели задач Ей даже можно иконку XLS скормить и любой Title подкинуть Может ли кто-нибудь написать такую? .NET Sample Interop Library или может можно на WinAPI CreateWindowEx создать окно с прогресс баром как-то
Изменено: - 08.04.2022 15:38:41
|
|||
|
|
|