2014-01-28 2 views
0

Я получаю ошибку времени выполнения '1004': метод «Ranger» объекта «_heetheet» не выполнен по следующему коду.Работа с несколькими книгами/экземплярами 1004 error

Public sh2 As Worksheet 
Public sh1 As Worksheet 
Public wb1 As Workbook 
Public OtherWB As Object 

Sub Test() 

Set wb1 = ThisWorkbook 
Set OtherWB = GetObject("C:\OtherWB.xlsm") 
Set sh1 = wb1.Worksheets("Sheet1") 
Set sh2 = OtherWB.Worksheets("Sheet1") 

sh2.Range("A7").Select 
sh2.Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 3)).Copy 
sh1.Range("c8").PasteSpecial xlPasteAll 

End Sub 

В основном я хочу, чтобы скопировать из OtherWB.xlsm, который уже открыт в другом экземпляре Excel и вставить его в текущую книгу. Второй экземпляр необходим здесь, так как система использует несколько мониторов. Я могу вытащить данные ячеек без проблем с другими свойствами, но когда дело доходит до использования «Копирования», все идет немного неловко. Является ли копирование не допустимым свойством при использовании книг Excel в качестве объектов?

+0

В какой строке вы получили сообщение об ошибке? –

+0

sh2.Range (ActiveCell.Offset (0, 1), ActiveCell.Offset (0, 3)). Копировать Позволяет выбрать ячейку. – Josh

+0

Прочтите [это] (http://support.microsoft.com/kb/905164). Может быть, это может помочь –

ответ

0

Вы не можете использовать ActiveCell другой книги, не указав это.

Try:

With sh2 
    .Range(.ActiveCell.Offset(0, 1), .ActiveCell.Offset(0, 3)).Copy 
End With 

EDIT:

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

sh2.Range("A7").Select 
sh2.Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 3)).Copy 

с :

sh2.Range(sh2.Range("A7").Offset(0, 1), sh2.Range("A7").Offset(0, 3)).Copy 

EDIT2:

Также отметим, что метод .Copy имеет параметр Destination, который может быть в другой книге. Прочтите MSDN Range.Copy Method Reference.

+0

sh2.Range (sh2.Range («A7»). Смещение (0, 1), sh2.Range («A7»). Смещение (0, 3)). Копирование <---- Мы приближаемся. Это скопировано, но когда я пошел на вставку, он вставил его как объект изображения в другую книгу. – Josh

+0

Попробуйте: sh2.Range (sh2.Range («A7»). Смещение (0, 1), sh2.Range («A7»). Смещение (0, 3)). Копирование Назначение: = sh1.Range ("c8 ") –

+0

Не удалось выполнить метод копирования класса диапазона. – Josh

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