2015-05-28 4 views
1

Я смотрел на это целую вечность, и я знаю его что-то простое.Метод 'PasteSpecial' объекта 'Range' failed

ниже код бросает мне ошибку «метод„PasteSpecial“объекта„Range“не удалось» это ошибка

With xlWB.Sheets("Lookups") 
    'Copy lookups tab to word test tables 
    .Cells.Copy 
    ThisWorkbook.Sheets("Word_Test_Tables").Cells.PasteSpecial 
    Application.CutCopyMode = False 
End With 

Ошибка возникает на pastespecial.

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

Поставив точку останова на строке ошибки я могу получить диапазон от

?ThisWorkbook.Sheets("Word_Test_Tables").Cells 

Я попытался активировать лист, лист восстановления скрытого. Я могу подтвердить, что xlWB является действительным и открытым, .cells.copy выглядит как работающий, когда вы получаете выделение вокруг листа.

Любые идеи?

ответ

1

Я не знаю, почему вы бы скопировать все клетки, а не только используемый диапазон:

xlWB.Sheets("Lookups").Usedrange.copy _ 
Destination:=ThisWorkbook.Sheets("Word_Test_Tables").Range("A1") 
+0

По какой-то причине это сработало отлично. Листы точно такие же, поэтому я не знаю, почему это было бы нормально, и мой код не стал бы. Я пробовал использовать .usedrange.copy в своем, как и в моем исходном коде, и это тоже сработало, должно быть, связано с .cells? любые мысли о том, почему? – 99moorem

+0

Обе книги одинакового формата? (т. е. не копирование из xlsx в xls или наоборот?) – Rory

+0

xlwb - xlsx, код запускается из xlsm – 99moorem

0

Вы должны выйти из вашей «с», чтобы вставить значения в другой книге:

With xlWB.Sheets("Lookups") 
'Copy lookups tab to word test tables 
.Cells.Copy 

End With 

ThisWorkbook.Sheets("Word_Test_Tables").Cells.PasteSpecial 
+0

Похожая ошибка с вышесказанным. Насколько мне известно, вы должны иметь возможность делать это в пределах до тех пор, пока вы не используете «.». от тебя с тобой будет хорошо. – 99moorem

+0

Хорошо, это странно, хотя, когда я тестировал код перед публикацией, и все прошло нормально? Есть ли еще код, который вы не включили? – Uberzen1

+0

Хотя я думаю, что @Rory, вероятно, лучшее решение с использованием usedRange? – Uberzen1

0

У вас могут быть рабочие листы разных размеров в зависимости от исходных книг. Попробуйте скопировать меньший Range.

Кроме того, вы, вероятно, хотите ActiveWorkbook вместо ThisWorkbook.

+0

Меньший диапазон, как оказалось, устранил бы мою проблему. Даже листы одинаковы, точно так же. activeworkbook будет листом данных, поэтому мне понадобится Thisworkbook. Спасибо за ответ. – 99moorem

Смежные вопросы