2012-09-09 16 views
6

To powinno być naprawdę proste, ale od dawna szukam forów i odpowiedzi na wiele pytań, więc bez powodzenia (niechętnie) tworzę własne pytanie.Kopiowanie zakresu i wklejanie do nowego skoroszytu

Co próbuję zrobić, to po prostu utworzyć nowy skoroszyt i wkleić zakres z innego skoroszytu do skoroszytu. Brzmi prosto ...?

Mój oryginalny skoroszyt, nazwijmy Book1. Próbuję utworzyć nowy skoroszyt, Book2, który skopiuje wartości z wartości z komórek A1: B10 na.

Oto jedna wersja mojego kodu (począwszy BOOK1 otwartego):

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 

Daje to „PasteSpecial klasy zasięgiem powiodło się” błąd. Próbowałem następujące poprawki bez powodzenia:

  • dodanej „Skoroszyty («Zeszyt2.xls») Aktywuj”. Kodowi
  • usunięto dodatkowe argumenty w PasteSpecial linii
  • próbował”.Paste „zamiast” .PasteSpecial”
  • zmiany` Selection.PasteSpecial" do «ActiveSheet.PasteSpecial»
  • wyraźnie odnosi się do zakresu kopiowaniem, wraz z arkuszem i blachy odniesienia
  • tworzenia nowego skoroszytu, następnie wykonywanie c przed ponownym włączeniem nowego skoroszytu i wklejeniem

Żadne z powyższych rozwiązań nie działa ... każda mądrość na tym etapie byłaby wdzięcznie przyjęta!

Odpowiedz

16

Czy to właśnie próbujesz? Skomentowałem kod, aby nie mieć problemu ze zrozumieniem, co robi kod.

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

To działa dla mnie.

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 
Powiązane problemy