Страницы: 1
RSS
Вставка из буфера обмена
 
Всем привет.
Подскажите пожалуйста.
Я копирую значения с одного экселя следующим образом:
Код
objXls5.Sheets("Реестр").Range("W6:X" & llastr).SpecialCells(12).Copy
и вставляю в другой эксель следующим образом:
Код
objXls6.Sheets("Форма").Paste objXls6.Sheets("Форма").Range("H" & llastr2)
В общем смысле это работает, но так как у меня копируемые диапазоны находятся в разных местах Реестра, приходится последовательно их частями копировать и вставлять в Форму.
Раньше всё работало отлично, большой объем отрабатывал нормально, но не давно на рабочем ПК переустановили винду с 10ки на 11ю, офис остался также 2019, но начались проблемы. Иногда макрос может отработать хорошо полностью, а иногда выдает ошибку на методе вставки - Run-time error '1004': Метод Paste  из класса Worksheet завершен неверно.
А так как их много в коде, оно происходит не в одном и том же месте, а рандомно в разные случае запуска макроса.
Раньше когда на 10ке всё было хорошо, на всякий случай чтобы успел отрабатывать буфер обмена использовал своеобразный sleep:
Код
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)

Sleep (400)
Так как иногда выдавал ошибки эксель, что у него не получалось как-то вставить информацию из буфера обмена.
Сейчас поставил слип на 1000, в надежде что в этом дело, но всё тщетно.
Как думаете, что может быть и как решить проблему?
 
Здравствуйте.
нужно ОДНОЙ СТРОКОЙ писать, что куда копировать: ЧтоКопировать.Copy КудаКопировать
Примерно так:
Код
Range("a1:a5").Copy Range("b8")

в вашем случае, что-то вроде такого:
Код
objXls5.Sheets("Реестр").Range("W6:X" & llastr).SpecialCells(12).Copy  objXls6.Sheets("Форма").Range("H" & llastr2)

и никаких пауз!
Изменено: Игорь - 27.05.2024 17:00:52
 
Игорь, к сожалению, ругается.

Было:
Код
objXls5.Sheets("Реестр").Range("A6:D" & llastr).SpecialCells(12).Copy
Sleep (400)
objXls6.Sheets("Форма").Paste objXls6.Sheets("Форма").Range("B" & llastr2)
Стало:
Код
objXls5.Sheets("Реестр").Range("A6:D" & llastr).SpecialCells(12).Copy objXls6.Sheets("Форма").Range("B" & llastr2)
Ошибка:
Runtime error 1004 - Метод Copy из класса Range завершен неверно
Изменено: aie_project - 28.05.2024 11:17:22
Страницы: 1
Наверх