Цитата |
---|
KUDRIN написал: ZVI, спасибо |

Vladimir Zakharov
Microsoft MVP – Excel
Microsoft MVP – Excel
2 Апр 2018 10:15:38
Владимир (sokol92) отметил, что первый вариант кода все же может в некоторых случаях конвертировать текст в дату, цитата:
Функции IsDate и IsNumeric учитывают региональные настройки, а Excel при прнятии решения о преобразовании заносимого в ячейку текста в число/дату - нет. Например, при стандартных региональных настройках Windows-1251 (в частности, разделитель дробных разрядов - запятая) он преобразует "1,234,567" и "Apr 2". Поэтому рекомендую 2-й вариант кода, он и проще и надежнее. Владимир, спасибо!
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|
|
2 Апр 2018 01:08:01
В любом случае подразумевается, что данные исходного массива будут циклически обрабатываться перед копированием на лист.
В эту обработку несложно добавить фрагмент кода для корректировки текстовых значений массива с целью предотвращения их преобразования при копировании массива в диапазон с общим форматом ячеек.
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
29 Мар 2018 21:43:24
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
27 Мар 2018 22:55:50
Имитация зависания для обнаружения 2-х экземпляров Excel на вкладке "процессы" диспетчера задач (удобно отсортировать там по имени)
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
27 Мар 2018 22:01:27
Перед циклом и после каждого Paste желательно добавить Application.CutCopyMode=False для очистки памяти.
И на всякий случай временно для исключения внешних виновников отключите OneDrive, Skype и прочие программы, завязанные на анализ "на лету" буфера обмена.
Vladimir Zakharov
Microsoft MVP – Excel |
|
|
27 Мар 2018 21:51:17
![]() Дмитрий правильно рекомендует - включите для отладки xlApp.Visible = True. Еще в коде очистка памяти не выполняется при Exit Sub, а очистки Set wbOpen = Nothing вообще нет, посмотрите рекомендацию по очисткае памяти в моем коде сообщения
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
27 Мар 2018 21:43:08
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
27 Мар 2018 21:34:45
И добавьте отложенный запуск: загрузка некоторых процессов в Excel происходит асинхронно, код Workbook_Open может начать выполняться до полной загрузки, когда доступ к объектной модели Excel неполный. Задержка в предложенном варианте - минимальная, ее почти нет (см. Now), но есть.
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||||
|
27 Мар 2018 20:46:33
Добрый вечер, Андрей.
Похоже, что в примере кода есть опечатки. На всякий случай отмечу их: Вот эта строка ошибочна: Set xlApp = New Excel.Application.EnableEvents = False Должно быть: Set xlApp = New Excel.Application Не объявлена переменная kas Не хватает 2-х End With Также нет проверки существования файла, который открывается во 2-м экземпляре Exc el. Главная рекомендация: всегда до выполнения каких-либо действий с объектами давайте Excel загрузиться полностью. Для этого переименуйте Workbook_Open с Вашим кодом в Workbook_Open1 , а в новой процедуре Workbook_Open напишите одну строку кода для отложенного запуска кода Workbook_Open1:
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
23 Мар 2018 14:54:43
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||||
|
23 Мар 2018 01:23:56
Добро пожаловать на форум!
![]() Примеры кода макросов Test1 и Test2, запускающих макрос DelMacro очистки ячеек A1:B2 листа1 приведены ниже. Подробнее про OnTime можно почитать в VBA-справке.
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
23 Мар 2018 00:08:02
Полагаю, что теперь достаточно один раз обычным способом через формат ячеек задать для данного столбца требуемый формат даты и подобных сбоев быть не должно.
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
21 Мар 2018 12:23:45
По теме правильно советовали: тестировать только на рабочем компьютере.
Если там книга не загрузится, то добавить к расширению файла .XLSX еще и .ZIP Получится что-то типа ИмяФайла.XLSX.ZIP Затем такой файл попытаться открыть в архиваторе, если внутри архива есть папка XL, в которой и хранятся данные книги, то восстановлением можно заняться.
Vladimir Zakharov
Microsoft MVP – Excel |
|
|
21 Мар 2018 12:16:20
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
18 Мар 2018 19:47:29
Такая проблема когда-то была, по-моему, еще в Excel 2007.
Проблема была связана с изменением числового формата в стиле "Обычный" (Normal), там по умолчанию стоял формат даты вместо общего. У Вас, возможно, в процессе работы кто-то пользуется искаженным стилем "Обычный": либо установлен на конкретном компьютере, либо копируются ячейки вместе с искаженным стилем из старой книги. Такая проблема легко "приклеивается" при общем доступом к книге. Исправлялась так: Главная - Стили ячеек - правый клик на стиле 'Обычный' - Изменить - Формат - вкладка 'Число' - Общий - OK - OK Проще всего повесить на открытие книги макрос, выполняющий описанные выше действия: ThisWorkbook.Styles("Normal").NumberFormat = ""
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|
|
18 Мар 2018 18:03:36
Виктор, когда-то эти нюансы мы обсуждали в теме
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|
|
18 Мар 2018 17:44:34
Вообще, нужно признать, что Excel все делает правильно, но по своим, а не нашим правилам
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
15 Мар 2018 11:41:19
Иногда бывает то, о чем написал Дмитрий в сообщении #8 - при отображении разметки страниц листа задействуется и тормозит обычную навигацию на листе драйвер принтера. В такой режим можно попасть не только из Вид - 'Разметка страниц' или 'Страничный режим', но и после предварительного просмотра или экспорта в PDF. В некоторых случаях (зависит от драйвера принтера), даже без каких-либо действий на листе автофигуры начинают периодически вам подмигивать.
Устраняется таким кодом (публиковал когда-то):
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||
|
15 Мар 2018 11:27:21
Причина таких тормозов может быть в том, что на листе много объектов-прямоугольников с нулевой высотой или шириной, поэтому их не видно. Можно сохранить книгу в XLS-формате и удалить их так:
или более цивилизованно:
В XLS формате удаление мгновенное, а в современном формате книги удаление может выполняться о-о-чень долго. После удаления - сохранить в нужном формате. Можно и без конвертирования в XLS: 1. Закрыть Excel 2. Переименовать "MyFile.xlsx" to "MyFile.xlsx.zip" 3. Открыть архив "MyFile.xlsx.zip" в проводнике или архиваторе, удалить папку внутри архива: XL\DRAWINGS и сохранить изменения 4. Переименовать обратно "MyFile.xlsx.zip" в "MyFile.xlsx" 5. Открыть "MyFile.xlsx" в Excel, игнорируя предупреждение об удалении автофигур, сохранить книгу. После этого все будет по-быстрому.
Изменено:
Vladimir Zakharov
Microsoft MVP – Excel |
|||||
|
12 Мар 2018 11:11:13
При запуске OnTime с параметром есть один нюанс - если нужно отменить уже заряженный запуск по Schedule:=False (например, при закрытии книги), то требуется указывать не только имя процедуры, но и тот же параметр:
Application.OnTime EarliestTime:=SavedTimeToRun, Procedure:="'Лист4.Poll " & SavedNumber & "'", Schedule:=False здесь SavedTimeToRun - глобальная переменная, в которой сохранена дата и время отложенного запуска макроса, а SavedNumber - глобальная переменная, в которой сохранено значение параметра Number, посланного в OnTime.
Vladimir Zakharov
Microsoft MVP – Excel |
|
|