Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 155 След.
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Цитата
MultiZeus написал:
а то старички стали переживать!
Спасибо школоте, успокоили!  :D
Тимофеев , извините за наезд! Зачеркнул там в #54.
Изменено: ZVI - 13.12.2025 02:29:37
Замедление работы макросов в фоновом режиме на ноутбучном железе
 
Посмотрел бегло код - все там в порядке с массивами и не только с ними.
Так как непонятен объем данных (шаблон), то, возможные причины:
1. Тормозят формулы, если там длинные зависимости, например, когда ячейки зависят от предыдущих, а там долгие формулы типа ВПР
Чтобы пересчет был быстрым, бывает, что лучше в столбцах кодом вписывать формулу и сразу заменять на значения .Value=.Value
Тогда дерево зависимостей короткое и быстрое, что может дать общий выигрыш, даже когда таких столбцов много.
На тестовой копии можете предварительно специально (хоть вручную) заменить формулы на значения и проверить ускорение, по-сути, максимальное для данного метода. Понятно, что на результирующие данные смотреть при этом не нужно.
2. В диапазонах можно не использовать .Calculate, т.к. формулы пересчитаются при Application.Calculation = xlCalculationAutomatic
Это если там на этот пересчет что-нибудь не завязано, конечно.
3. В fill_shablon() значения массива копируются в столбцы листа по одному столбцу. Если столбцов много, то это медленно. Можно подготовить результирующий (или для нескольких столбцов) массив и выгрузить его на лист. Кода будет больше, но быстрее.
4. Словари начинают нелинейно тормозить примерно с 50000 элементов.

В коде есть профилирование времени, интересно, какие процессы тормозят больше всего.
Изменено: ZVI - 13.12.2025 02:56:46
Замедление работы макросов в фоновом режиме на ноутбучном железе
 
Цитата
Alex написал:
Не помогло.
Спасибо, что проверили!
Ваш код я не смотрел.
Обычно при таких больших временах  оптимизация кода должна дать значительное ускорение.
Чаще всего тормозят циклы по ячейкам, или другие многократные взаимодействия между VBA и объектами Excel.
Метод - один раз считать в массив(ы) значений диапазонов, обработать массив(ы) в VBA и присвоить результирующему диапазону массив результатов.
Это на всякий случай. Наверное, Вы это всё знаете и используете (код я не открывал)
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Виталий, для клиентов GitHub Enterprise риск минимален, но не нулевой.
А для бесплатных приватность под большим вопросом.
Можно почитать комментарии об этом, например, здесь
Изменено: ZVI - 12.12.2025 23:15:14
Замедление работы макросов в фоновом режиме на ноутбучном железе
 
Alex , сделайте доверенным источником папку, откуда загружается книга с макросами.
Перезагрузите Excel и проверьте. У Вас много кода, может помочь. Если поможет - поясню.
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Тимофеев Добрый вечер, Григорий.
Вы бы сообщали вначале, кому Вы отвечаете и что и зачем публикуете.
Похоже, что Вы попытались с помощью ИИ взломать и опубликовать чей-то коммерческий код.
Комментарии там похожи очень на то, что было по ссылкам :)

ИИ тренируют на кодах из GitHub и др. мест, и при определенных запросах вполне может вытащить коммерческий код.[/S]
Если в данном случае это так, то:
1. Публиковать это незаконно и противоречит правилам форума.
2. Если это ответ автору темы про "купить для изучения", то там не шла речь о публичном обсуждении коммерческого кода, а если бы шла, то см. пункт 1 выше.
3. Не понятно, зачем публиковать на форуме не протестированный Вами код?

ИИ, когда сочиняет, то врет ошибается, как дышит.
Возможно, что красть ИИ может лучше, чем сочинять на основе других кодов.
Но ответственность за публикацию украденного - на том, кто воспользовался ИИ как инструментом (фомкой).
Изменено: ZVI - 13.12.2025 02:36:28
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Senaki, для меня Excel и VBA всегда были только хобби, работа другая.
Чьи-либо оценки мне не важны, цели 9 лет подтверждать статус MVP Microsoft и получить статус MVP MrExcel тоже никогда не ставил – все само собой.
Этот форум не для выпендрежа, цель его - именно помогать людям, они важнее даже тех, кто им помогает.
Какому числу примерно пользователей Вы помогли своими наработками у себя на сайте или где-либо?
Сравните с отдачей того же Дмитрия здесь, плюс у него на форуме плюс его надстройки и решения.
Оценки форума именно такие, учитывайте это.

Но цель у Вас явно иная, почему же Вы тогда здесь?
Реклама, поиск соучастников или что?
Тем более, что здесь как иронично отмечено, "разработчиков и нет".
Где же тогда логика?

Насчет отмеченных Вами тем – мне не интересно участвовать там, где для меня нет новизны.
Я всегда сам себе выбираю темы для участия, если мне там что-то интересно или новое, и есть свободное время и/или просто есть настроение.
Тему загрузки файлов с перенаправлением в другой экземпляр на MrExcel обсуждали лет 10 назад.
Вы, действительно, что ли считаете, что там что-то особенное?
Мне не нужен чужой код или видео для этого, достаточно знаний.
В каком-то древнем KB от Microsoft вообще было предложено создать с утечкой памяти для подобных целей скрытый экземпляр Excel, чтобы осложнить его активацию и штатное закрытие. Но это так, про "уникальность" подхода.
Работает всё там у Вас и хорошо, документировано – замечательно!

Публикую я не всё, что знаю или нарыл когда-то самостоятельно.
Если интересно, мои сообщения на форумах можете посмотреть в профиле ZVI.
Конечно, кроме тех, что канули в лету на старых форумах.
Насчет групповой политики безопасности - VBA тоже может быть запрещен политикой и даже не установлен.
Не хватает реально полезной конкретной тестовой задачи, о которой тут уже спрашивали, а не просто идеи.
И достигнутых результатов по быстродействию в сравнении с VBA-решением или С/С++ решениями Виталия (Bedvit).
В любом  случае, искренне желаю удачи!
Изменено: ZVI - 11.12.2025 02:51:14
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Всем привет!
Детский сад какой-то с клонами аккаунтов и наигранным интересом с элементами провокаций. По клонам - есть правило, мочите их всех.
По стилю общения здесь, по-моему, клонов больше 2х и интерес, скорее, искусственный.
И тема на cyberforum аналогично выглядит банальным разогревом коммерческого интереса.
Кто здесь интересующиеся этой темой и что сделали на форуме легко видно в профиле, если просмотреть сообщения.

По поводу скинуться и изучить, понятно же, что коммерческое решение не допускает опубликования купленного решения/кода, обычно это оговорено в лицензии. Поэтому выглядит тоже провокацией, уж извините за прямоту.

По существу - смотрел бегло видео по ссылкам.
Вполне нормально там все показано и очень хорошо документировано.
Автор – молодец в этом плане.
Понравилось, что начинается с описания проблемы.
Но явно не хватает пояснения, чьи это могут быть проблемы, т.е. описания целевой аудитории. Мое мнение - это проблемы небольшой части начинающих разработчиков VBA решений, замороченных на желании найти "волшебное" решение. Такая аудитория не идет ни в какое сравнение по количеству с несоизмеримо большей целевой аудитории той же надстройки Plex.

Есть, минимум, 2 пути ускорить код: интенсивный и экстенсивный.
Интенсивный – это более оптимальный код, формулы и организация данных. Здесь на форуме много решений, ускоряющих таким образом выполнение в 10…100 раз. Но нужен определенный опыт и, в принципе-то, несложные знания.
Экстенсивный – параллельные вычисления, например, в разных экземплярах Excel.
Такое себе удовольствие. Кто-то пытался прописать, например, в формуле книги одного экземпляра Excel ссылки на ячейки в другом экземпляре. Или копировать формулы, форматы, автофигуры и т.п. Мрак же. Отлаживаться, как по мне, гораздо удобнее отдельно, а не из менеджера. Но начинающим, может, будет удобнее и в менеджере.

По поводу формы из ссылки сообщения #6.
Что там сложного-то?
Например, можно создать и активировать форму в скрытом экземпляре Excel и отлавливать открытие в этом экземпляре книг, запомнить откуда открывается, закрыть, создать новый экземпляр Excel и в нем открыть эту книгу и отлавливать события еще и там. Есть там нюансы, которые нужно учесть, но это уже технические рутинные моменты, решения которых точно можно найти в интернете, если сам не знаешь.
Мне, как и Дмитрию, уверен, что и большинству помогающим здесь, это совершенно не интересно в плане использования для конкретных проблем аудитории форума.

В техническом плане решение по ссылкам вполне профессиональные, автор постарался там, не флудил бы только ещё здесь.
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
Оказывается, сайт поддерживает IE.
Тогда проверьте еще такую версию:
Код
Sub UpdateTable()
' ZVI:2025-06-06 https://www.planetaexcel.ru/forum/?PAGE_NAME=message&FID=1&TID=17134
' IE version
  Const FILE = "Table.htm"
  Const URL = "https://www.e-disclosure.ru/portal/files.aspx?id=1976&type=3"
  Dim i As Long, j As Long
  Dim s As String, sFile As String
  With CreateObject("InternetExplorer.Application")
    .Silent = True
    .navigate URL
    While .Busy Or .readyState <> 4: DoEvents: Wend
    s = .Document.body.innerHTML
    .Quit
  End With
  i = InStr(s, "<table")
  j = InStr(i + 1, s, "</table>")
  If j = 0 Then
    MsgBox "Site Table not found!", vbExclamation, "Exit"
    Exit Sub
  End If
  s = "<html><body>" & vbLf & Mid(s, i, j - i + Len("</table>")) & vbLf & "</body></html>"
  sFile = ThisWorkbook.Path & "\" & FILE
  On Error Resume Next
  With CreateObject("ADODB.Stream")
    .Type = 2
    .Mode = 3
    .Charset = "UTF-8"
    .Open
    .WriteText s
    .SaveToFile sFile, 2
    .Close
  End With
  If Err Then MsgBox Err.Description, vbExclamation, "Error #" & Err
End Sub

У меня работает, впрочем, что только у меня в Win10 не работает )
Если в Вашей Win11 уже нет IE, то по инфо от MS в его браузере (на форме/листе) должно будет работать.
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
Если вручную работает, то позже нарисую и протестирую код для PDF
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
Цитата
написал:
не нашел только в библиотеке Reference MSXML2.XMLHTTP версии 3.0
Должно быть так:

Интересно бы узнать версию операционки, офиса и браузера по умолчанию.
И что, даже вручную распечатать в PDF не получается?
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
Остается еще в запасе упомянутое здесь сохранение в PDF и подключение его к PQ (не тестировал)
P.S. Кодом, конечно
Изменено: ZVI - 06.06.2025 13:56:38
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
В новых операционных системах на работу MSXML2.XMLHTTP версии 6.0 могут влиять настройки безопасности браузера (см. панель управления).
Поэтому:
1) Можно попытаться в Панель управления - Свойства браузера – Безопасность – Надежные сайты – Сайты - добавить этот сайт
2) Использовать через VBE-Tools-Reference MSXML2.XMLHTTP версии 3.0 , вроде, это хорошо работает и в Excel 365. Может, и п.1 тогда не понадобится
3) В коде в начале чистить кэш браузера, чтобы данные читались с сайта, а не из локального кэша. Если поможет, то лучше потом поставить очистку кэша только этого сайта (быстрее, нет перерисовки экрана)

Приложил тестовый вариант с п.п. 2 и 3
Проверьте все варианты, вдруг, заработает.
Повторю еще раз, что у меня и без этих пунктов всё работает нормально в Win10, Excel 2010 (x32) и в Excel 2021 (x64)

Изменено: ZVI - 06.06.2025 13:47:32
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
Цитата
написал:
i и j = true
Они же Long.  Не так это делается.
Нужна точка останова после "j =" и тогда ?j
Или пошагово по F8.
Поищите как отлаживать код VBA
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
Цитата
написал:
в excel 2021 windows 11 вообще без вариантов
Добрый день, Алексей!
У меня Win10 x64. Если в Win11 не пропускает, то, возможно, версия MSXML2 другая - можно подключить разные по reference и посмотреть.
Или заголовки почему-то нужны, или еще что,..
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
Цитата
написал:
если правильно сделал
На какую строку ругается отладчик?
Чему равны i и j?
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
Цитата
написал:
написано что нет таблицы
Скопируйте без изменения код из #22 и запустите его.
Если не работает, то нужна отладка: остановить код, посмотреть, что там в s - есть ли "<table"
Тестировал в Excel  2010 (x32) и 2021 (x64) -работает.
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
Цитата
написал:
Ошибка вышла - ни разу такую не видел
Там написано что макросы книги отключены, нужно их включить.
Добавьте путь к папке с книгой в надежные расположения:
Файл - Параметры - Центр управления безопасностью - Параметры центра управления безопасностью - Надежные расположения - Добавить новое расположение - Ok -Ok - Ok
И перезагрузить книгу.
Изменено: ZVI - 06.06.2025 07:56:24
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
Чтобы не зависеть от версий:
Код
Sub UpdateTable()
  Const FILE = "Table.htm"
  Const URL = "https://www.e-disclosure.ru/portal/files.aspx?id=1976&type=3"
  Dim i As Long, j As Long, s As String, sFile As String
  With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", URL, False, "", ""
    .Send
    If .Status <> 200 Then
      MsgBox "Site Error: #" & .Status & vbLf & .StatusText, vbExclamation, "Exit"
      Exit Sub
    End If
    s = .ResponseText
  End With
  i = InStr(s, "<table")
  j = InStr(i + 1, s, "</table>")
  If j = 0 Then
    MsgBox "Site Table not found!", vbExclamation, "Exit"
    Exit Sub
  End If
  s = "<html><body>" & vbLf & Mid(s, i, j - i + Len("</table>")) & vbLf & "</body></html>"
  sFile = ThisWorkbook.Path & "\" & FILE
  On Error Resume Next
  With CreateObject("ADODB.Stream")
    .Type = 2
    .Mode = 3
    .Charset = "UTF-8"
    .Open
    .WriteText s
    .SaveToFile sFile, 2
    .Close
  End With
  If Err Then MsgBox Err.Description, vbExclamation, "Error #" & Err
End Sub
Файл Table.htm будет создан/обновлен там же, где и книга с этим кодом
Table.htm можно загрузить в PQ или в Excel непосредственно через Файл-Открыть...
Изменено: ZVI - 06.06.2025 04:35:02
Странное поведение Like (VBA)
 
Цитата
написал:
... не на то время тратите!
Приветствую!
Та мы в курилке на что хотим, на что и тратим, и никто нам не указ  :D
Почем гамбургеры для народа?  ;)  
Изменено: ZVI - 16.05.2025 14:11:36
Странное поведение Like (VBA)
 
Цитата
написал:
наверное пообщаться,
Поговорить - да, это нормально и приятно.
Вообще, к Like претензии вижу впервые.
Работает в соответствии с описанием и очень быстро.
А все вольности этого оператора при некорректно заданных шаблонах ему прощаю – неизвестно какими мы сами будем в пограничном состоянии  :D  
Создание резервной копии при закрытии файла
 
Цитата
написал:
даже не выводит сообщение о том, что папки не существует
Добрый день.
GetAttr("H:\") And 0 всегда выдаст 0, т.к. это бинарная операция.
Используйте тогда уже GetAttr("H:\") And vbDirectory
Странное поведение Like (VBA)
 
Добрый день, Виталий!
Не понятна цель вопроса об особенностях реализации в MS исходного кода оператора Like, которого никто здесь не видел и не увидит. Разве что, интересны наши фантазии на этот счет  :)
Есть правила составления шаблонов для оператора Like, по ним нужно и писать код.
При несоблюдении этих правил VBA имеет право поступить так, как сработает внутренний код, вернув то, что получится: True/False/Error
В шаблоне "[1-4-6]"  повторный символ "-" не на месте, т.к. это не символ диапазона (синтаксис нарушен) и он ни в начале списка, ни в конце, где ему положено быть по правилам.
VBA при этом на ошибку не наткнулся, а посчитал шаблон "[1-4-6]" как:
символ в диапазоне "[1-4]"  ИЛИ символ "-"  ИЛИ символ "6"
И в простом шаблоне "[F-F]" VBA, так и быть, посчитал некорректно заданный диапазон отсортированным по возрастанию.
Но в более сложном fuzzy-шаблоне "*[F-F]" тот же диапазон "[F-F]", чтобы не создавать неопределенности, мог посчитатьcя некорректным, например, возможно отсортированным по убыванию, это означает ошибку. Или код в таком случае мог использовать "жадный" поиск и тупо откусить первый символ в шаблоне (поэтому и True  в строке 3), или вообще что угодно.

Пофантазировал, и что теперь?  ;)  
Изменено: ZVI - 15.05.2025 09:27:44
Как скопировать определенный текст через VBA в Word
 
Цитата
БМВ написал:
Реально никогда не пользовался
Аналогично...
Вот это новость, благодарю!
Как скопировать определенный текст через VBA в Word
 
Цитата
ZVI написал: ... Михаил, понятно. Посмотрю, но позже
Михаил, я посмотрел.
Внешняя программа, которая вносит "ЗАКЛЮЧЕНИЕ", похоже, добавляет перед этим словом XML-атрибут  "<w:caps/>" (слово:заглавными), что и приводит к CAPS-отображение слова. Возможно, данный атрибут попал туда и по какой-то иной природе. В document.xml таких атрибута 2. Если удалить 2-й или оба, то все приходит в норму.

В кривом документе если (например, вручную) установить в параметрах поиска 'не учитывать регистр', то поиск выделит "ЗАКЛЮЧЕНИЕ", но в результате поиска отобразится "Заключение":



Можно посмотреть даже проще: вручную выделить слово "ЗАКЛЮЧЕНИЕ" и правым кликом выбрать "Ссылка" -  в верхнем поле отобразится текст "Заключение":

Изменено: ZVI - 27.04.2025 03:04:32
Как скопировать определенный текст через VBA в Word
 
Михаил, понятно. Посмотрю, но позже, сейчас убегаю от компа )
Как скопировать определенный текст через VBA в Word
 
Цитата
БМВ написал:
На примере по маске не ищется слово ЗАКЛЮЧЕНИЕ. Стоит его ввести в ручную и все корректно отрабатывает.
Михаил, я не понял и не стал там вникать в цепочку обсуждения:
- в каком конкретно примере?
- куда и что (было-стало) конкретно ввести в ручную?
- откуда и как получен XML?
- "Маску если заменить на <Заключение>, все работает" - с острыми скобками <> или без?
Там упоминалась внешняя программа, она вполне могла влезть в XML.

Был бы конкретный пример, воспроизводящий проблему без всего лишнего, то было бы понятнее
Изменено: ZVI - 26.04.2025 19:39:19
Как скопировать определенный текст через VBA в Word
 
Цитата
БМВ написал: ... Ну как то не по вордовски это :-)
Привет, Михаил!
Специально так сделал, потому что это значительно быстрее.
По Word-овски - медленная возня с word-объектами диапазонов, учитывая еще и атрибуты/форматы для поиска.
Цитата
БМВ написал: ... нет ли идей по поводу  этого
Word-идеи отбросил из-за того, что в якобы пустых параграфах может быть один или несколько пробелов.
Учитывать их без нормальных регулярок - это, наверное, только перебор параграфов...
Хотя, конечно, можно быстро распарсить XML, но это как-то не по VBA-ному ;)
Изменено: ZVI - 26.04.2025 19:19:28
Как скопировать определенный текст через VBA в Word
 
Правильно сформулированная задача = полрешения:
В активном Word-документе требуется найти ключевые слова 1 и 2.
И выделить+скопировать диапазон после параграфа со словом1 и до параграфа со словом 2,
исключая в конце пустые параграфы и параграфы, содержащие только пробелы
.
Изменено: ZVI - 26.04.2025 22:14:52
Сохранение вложений из нескольких писем (Outlook), batch attachments saving
 
Цитата
Alex_L написал:
ZVI , спасибо большое!
Пожалуйста! Хорошо, что подтвердили.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 155 След.
Наверх