2012-09-09 4 views
6

Điều này cần phải thực sự đơn giản, nhưng tôi đã được diễn đàn trawling và SO câu trả lời cho giờ để tìm câu trả lời mà không có may mắn, do đó, (miễn cưỡng) tạo ra một câu hỏi của riêng tôi.Phạm vi sao chép và dán vào sổ làm việc mới

Điều tôi đang cố gắng chỉ đơn giản là tạo một sổ làm việc mới và dán một phạm vi từ một sổ làm việc khác vào sổ làm việc đó. Âm thanh đơn giản ..?

Sổ làm việc ban đầu của tôi, hãy gọi Book1. Tôi đang cố gắng tạo một sổ làm việc mới, Book2, mà tôi sẽ sao chép các giá trị của các ô A1: B10 tới.

Dưới đây là một phiên bản của mã của tôi (bắt đầu với Book1 mở):

Range("A1:B10").Copy 
Set NewBook = Workbooks.Add 
    With NewBook 
     .SaveAs Filename:="Book2.xls" 
    End With 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

này đưa ra một "PasteSpecial của lớp Dải thất bại" lỗi. Tôi đã thử các bản sửa lỗi sau đây không có may mắn:

  • thêm 'Workbooks ('Book2.xls') Kích hoạt.' Vào mã
  • loại bỏ những lập luận thêm trong dòng PasteSpecial
  • cố gắng' .Paste 'thay vì' .PasteSpecial'
  • thay đổi 'Selection.PasteSpecial' thành 'ActiveSheet.PasteSpecial'
  • rõ ràng tham khảo phạm vi sao chép, bao gồm cả bảng tính và bảng tham khảo
  • tạo bảng tính mới đầu tiên, sau đó thực hiện c opy, trước khi kích hoạt lại sổ làm việc mới và dán

Không có giải pháp nào trên đây hoạt động ... bất kỳ sự khôn ngoan nào ở giai đoạn này sẽ được biết ơn!

Trả lời

16

Đây có phải là những gì bạn đang cố gắng không? Tôi đã nhận xét mã để bạn không nên có bất kỳ vấn đề nào hiểu được mã nào.

Option Explicit 

Sub Sample() 
    Dim wbI As Workbook, wbO As Workbook 
    Dim wsI As Worksheet, wsO As Worksheet 

    '~~> Source/Input Workbook 
    Set wbI = ThisWorkbook 
    '~~> Set the relevant sheet from where you want to copy 
    Set wsI = wbI.Sheets("Sheet1") 

    '~~> Destination/Output Workbook 
    Set wbO = Workbooks.Add 

    With wbO 
     '~~> Set the relevant sheet to where you want to paste 
     Set wsO = wbO.Sheets("Sheet1") 

     '~~>. Save the file 
     .SaveAs Filename:="C:\Book2.xls", FileFormat:=56 

     '~~> Copy the range 
     wsI.Range("A1:B10").Copy 

     '~~> Paste it in say Cell A1. Change as applicable 
     wsO.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
     SkipBlanks:=False, Transpose:=False 
    End With 
End Sub 
3

Điều này phù hợp với tôi.

Private Sub CommandButton1_Click() 
Dim newWB As Workbook, currentWB As Workbook 
Dim newS As Worksheet, currentS As Worksheet 

'Copy the data you need 
Set currentWB = ThisWorkbook 
Set currentS = currentWB .Sheets("Sheet1") 
currentS .Range("A:M").Select 
Selection.Copy 

'Create a new file that will receive the data 
Set newWB = Workbooks.Add 
    With newWB 
     Set newS = newWB.Sheets("Sheet1") 
     newS.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
     SkipBlanks:=False, Transpose:=False 
     'Save in CSV 
     Application.DisplayAlerts = False 
     .SaveAs Filename:="C:\Temporary.csv", FileFormat:=xlCSV 
     Application.DisplayAlerts = True 
    End With 
End Sub