2014-10-27 4 views
0

У меня есть код, который выбирает все данные с определенного листа в книге A (имена как «fn» в коде) и копирует его на определенном листе в книге B. Что я хочу сделать только PASTE цЕННОСТЕЙ, т.е. вставить значения, скопированные из копии листа при сохранении/преобразования (в) формат таблицы в прошлом листа, вот мой код -Вставить значения с помощью vba

Set copySheet = copyBook.Sheets(fn) 'Points to the sheet in the raw data file 
Set pasteBook = ThisWorkbook 'Sets the file where we are supposed to paste to as the template file 
Application.DisplayAlerts = False 
Set pasteSheet = pasteBook.Sheets("Transaction") 'Points to the Transaction sheet on the template 
lastRow = copySheet.Cells(Rows.Count, 1).End(xlUp).row 'Computes the last row on the raw data file 


'Copies raw data to tab/sheet in template 
copySheet.Activate 
Application.ScreenUpdating = False 
For column = 1 To 27 
    For row = 2 To lastRow 
    cp = copySheet.Cells(row, column) 
    pasteSheet.Cells(row + 211, column).Value = cp 
    Next 
Next 
Application.ScreenUpdating = True 


copyBook.Close 'Closes the raw data file 
End If 

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

+0

Почему вы зацикливание? Вы не копируете и не делаете пасты в разные стороны? –

+0

не могли бы вы показать мне, как это сделать :) (как в самом коде) –

+2

Я могу, но почему бы вам не записать макрос и попробовать его сами :) –

ответ

0
cp = copySheet.Cells(row, column) 
pasteSheet.Cells(row + 211, column).Value = cp 

Изменения в

copySheet.Cells(row, column).Select 
Selection.Copy 
pasteSheet.Cells(row + 211, column).Select 
Selection.PasteSpecial Paste:=xlPasteValues 

Application.CutCopyMode = False 

Application.CutCopyMode здесь быть установлен в ложь просто берет вашу программу из режима копирования.

0

Попробуйте это. Вы также можете пропустить активацию листа, потому что вы просто копируете данные.

Application.ScreenUpdating = False 
For column = 1 To 27 
    For row = 2 To lastRow 

    pasteSheet.Cells(row + 211, column) = copySheet.Cells(row, column).Value 

    Next 
Next 
0

Обновление ваш цикл с этим:

For column = 1 To 27 
    For row = 2 To lastRow 
     copySheet.Cells(row, column).copy Destination:=pasteSheet.Cells(row + 211, column) 
    Next 
Next 
Смежные вопросы