2013-02-01 15 views
0

Как создать макрос, который будет делать следующее:Макрос для копирования диапазона в новую книгу

  1. Копировать диапазон A2: AT10000 из одной книги на первый лист новой книги.
  2. Вернитесь к исходной книге и выбрать диапазон A6: HF10000 в листе с кодовым названием: Sheet11
  3. Вставить выделение на вновь добавленный лист (лист 2) рабочую книгу, созданной на шаге 1

Я получаю время выполнения ошибки 424 и при отладке, выделенная линия Sheet11.Range("A6:HF10000").Select

Sub Copy2RangesNewWorkbook() 
' 
' Copy2RangesNewWorkbook Macro 
' 
Dim pvt_wbk_New As Excel.Workbook 
Dim pvt_xls_Current As Excel.Worksheet 

With pvt_xls_Current 
ActiveSheet.Range("A2:AT10000").Select 
Selection.Copy 
End With 

Set pvt_wbk_New = Application.Workbooks.Add 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

With pvt_xls_Current 
Sheet11.Range("A6:HF10000").Select 
Selection.Copy 
End With 

With pvt_wbk_New 
Sheets.Add After:=Sheets(Sheets.Count) 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
End With 
End Sub 
+1

Остерегайтесь различий между Worksheet.PasteSpecial и Range.PasteSpecial, как указал Сид в этом вопросе http://stackoverflow.com/questions/11003620/paste-special-values-in-vba – JustinJDavies

ответ

1

Try:

Sub Copy2RangesNewWorkbook() 

Dim pvt_wb_New As Excel.Workbook 
Dim pvt_ws_NewTarget1 As Worksheet 
Dim pvt_ws_NewTarget2 As Worksheet 
Dim pvt_ws_Current As Worksheet 
Dim pvt_wb_Current As Workbook 

Set pvt_ws_Current = ActiveSheet 
Set pvt_wb_Current = ActiveWorkbook 
Set pvt_wb_New = Application.Workbooks.Add 
Set pvt_ws_NewTarget1 = pvt_wb_New.Sheets(1) 
Set pvt_ws_NewTarget2 = pvt_wb_New.Worksheets.Add 

pvt_ws_Current.Range("A2:AT10000").Copy 
pvt_ws_NewTarget1.Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

pvt_wb_Current.Sheets("Sheet11").Range("A6:HF10000").Copy 
pvt_ws_NewTarget2.Range("A6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

End Sub 
+0

Спасибо, отлично работает! – Miles

+0

Последнее: В случае, если я изменю имя «Лист 11», макрос больше не будет работать. Я хотел бы использовать кодовое имя листа, которое является Sheet11. pvt_wb_Current.Sheets ("Sheet11") Диапазон.. ("A6: HF10000") Копировать Я пытался изменить эту строку: pvt_wb_Current.Sheet11.Range ("A6: HF10000"). Copy Но безуспешной. Я, наверное, должен это определить? Было бы здорово, если бы вы могли сообщить мне, так как имя листа определенно изменится людьми, кроме меня. благодаря – Miles

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