Страницы: 1
RSS
"Метод PasteSpecial из класса Range завершен неверно" при переносе на другую машину, Нестабильный сбой макроса при переносе на другую ПЭВМ
 
Есть макрос, в котором многократно (сотни раз, в т.ч. в циклах и без них) используются фрагменты
Код
    Windows(f_name).Activate
    Range("A6:M6").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows(xlt_name).Activate
    Range("A22").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Работает давно и устойчиво:
А) На ПЭВМ с Win7(32) + Office2003
Б) На ПЭВМ с Win10(64) + Office2007

На замену первой машине сделали виртуалку с Win8.1(64) + Office2007. Код не правили.
Макрос запускается, NN раз выполняет этот код, а на NN+1 выдает ошибку. При повторных запусках то же самое, но NN всякий раз разный. А обрабатываемые файлы все время одни и те же.
Вариант уйти от работы через буфер и перегонять данные через переменные либо операцию присваивания не рассматривается, т.к. макрос вырастет до неподъемных размеров.
 
Код
   Windows(f_name).Activate
   a = Range("A6:M6")
   Windows(xlt_name).Activate
   Range("A22").Resize(Ubound(a), Ubound(a,2)) = a
и на сколько вырос размер макроса?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вы этой командой перенесете только значения?
Не вижу в ней этого ограничения. Весьма вероятно, что будет также перенесено и форматирование ячейки, то есть будет выполнено не PasteSpecial, а Paste.
В чем разница? В том, что требуется перенести значения в заранее отформатированный шаблон. А команда Paste все чистовое форматирование снесет, как его и не было.
 
Цитата
Николай Б написал:
будет выполнено не PasteSpecial, а Paste
не будет, т.к. в массиве а содержаться исключительно значения.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Николай Б, вы сначала попробуйте, а потом уже выводы делайте
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
вы сначала попробуйте
а зачем?)
Не бойтесь совершенства. Вам его не достичь.
 
Большое спасибо, Игорь.
Почистил макрос от всех упоминаний капризной команды.
Теперь работает без сбоев.
Хотя странно, попытался обойтись без Workbook.Activate, подставив имя книги и листа непосредственно в формулу - не хочет.
А с переключением активной книги работает нормально.
Страницы: 1
Наверх