2014-02-04 8 views
0

Я пытаюсь запустить программу, которая выплевывает данные. в конце процесса я хочу скопировать эти данные в другую книгу. Я настроил его и работал до такой степени, что он копирует и вставляет данные в другую книгу, но на последнем этапе я получаю ошибку 424. Код ниже.Копирование ячеек и вставка в другую книгу - ошибка 424

sheet = Range("BL1") 
Range("BJ3:BM12").Copy 

Set wbk = Workbooks.Open("c:location") 

x = 1 
While wbk.Worksheets(sheet).Range("I" & x) <> "" 
    x = x + 1 
Wend 
wbk.Sheets(sheet).Range("I" & x).PasteSpecial.Value - Problem arises here 

Application.CutCopyMode = False 
ActiveWorkbook.Save 
Call wbk.Close(False) 

ответ

0

изменение

wbk.Sheets(sheet).Range("I" & x).PasteSpecial.Value 

в

wbk.Sheets(sheet).Range("I" & x).PasteSpecial xlPasteValues 
+0

Спасибо, симоко, я попробовал это предложение, но «ошибка компиляции. Переменная не определена» мне нужно что-то определить? – user3272213

+0

Является ли x1 x и 1 (один) или x и l (L)? – user3272213

+0

какое значение в переменной 'sheet = Range (" BL1 ")'? –

0

Проблема возникает при попытке вставить из книги, которая не является активной рабочей книги. Вы могли бы подумать, что книга, в которую вы вставляете, должна быть активирована, но вы не можете ошибаться. Я не знаю смысла. ;)

Sub a() 

Sheet = "sheet1" 'Range("BL1") 'changed this for the sake of simplicity 

Set cwb = Application.ActiveWorkbook 
Set wbk = Workbooks.Open("e:\b.xls") 

x = 1 
While wbk.Worksheets(Sheet).Range("I" & x) <> "" 
    x = x + 1 
Wend 
Set PasteStart = wbk.Worksheets(Sheet).Range("I" & x) 
cwb.Activate 'Activate the workbook you want to copy data from 
With Range("BJ3:BM12") 
    .Copy 
    .PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
    .Copy PasteStart 
End With 

Application.CutCopyMode = False 
wbk.Activate 
ActiveWorkbook.Save 
Call wbk.Close(False) 
End Sub 

Осторожно, этот код вставка значение в исходную книгу для достижения эффекта значения пасты, так что вы можете добавить некоторый код, чтобы закрыть оригинальную книгу без сохранения.

+0

'Проблема возникает, когда вы пытаетесь вставить из книги, которая не является активной книгой, - неправильно. Прочитайте [этот вопрос/вопрос] (http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select). Вам следует избегать использования операторов 'Select' и' ActiveSth' во всех случаях, когда это возможно –

+0

Спасибо за Q/A, очень полезно. Тем не менее, пользователь проблемы сталкивался с тем, что он пытался вставить из листа, который больше не был активным листом без заданного диапазона или объекта после открытия другого файла, поэтому в действительности другой файл станет активным листом. Тот факт, что вы можете использовать диапазоны Dim'd и избегать установки активного листа в качестве лучшего способа, не относится к делу. – Amadea

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