하나의 워크북에서 복사하여 다른 워크북에 붙여넣기
나는 다음과 같은 코드를 작성했고, 계속해서 본다.pastespecial method of class has failed
이 문제를 극복하려고 노력했지만 아무 것도 효과가 없는 것 같습니다.하나의 워크북에서 전체 시트를 복사하여 다른 워크북에 붙여넣으려고 합니다.
Set x = Workbooks.Open(" path to copying book ")
Workbooks.Open(" path to copying book ").Activate
Range("A1").Select
'Cells.Select
Selection.Copy
Set y = Workbooks.Open("path to pasting book")
Workbooks.Open("Path to pasting book").Activate
With y
Sheets("sheetname").Cells.Select
Range("A1").PasteSpecial
'Sheets("sheetname").PasteSpecial
.Close
End With
With x
.Close
End With
이것으로 충분합니다.문제가 있으면 알려주세요.
Sub foo()
Dim x As Workbook
Dim y As Workbook
'## Open both workbooks first:
Set x = Workbooks.Open(" path to copying book ")
Set y = Workbooks.Open(" path to destination book ")
'Now, copy what you want from x:
x.Sheets("name of copying sheet").Range("A1").Copy
'Now, paste to y worksheet:
y.Sheets("sheetname").Range("A1").PasteSpecial
'Close x:
x.Close
End Sub
또는 다음과 같은 방법을 사용할 수 있습니다.
Sub foo2()
Dim x As Workbook
Dim y As Workbook
'## Open both workbooks first:
Set x = Workbooks.Open(" path to copying book ")
Set y = Workbooks.Open(" path to destination book ")
'Now, transfer values from x to y:
y.Sheets("sheetname").Range("A1").Value = x.Sheets("name of copying sheet").Range("A1")
'Close x:
x.Close
End Sub
전체 시트로 확장하려면:
With x.Sheets("name of copying sheet").UsedRange
'Now, paste to y worksheet:
y.Sheets("sheet name").Range("A1").Resize( _
.Rows.Count, .Columns.Count) = .Value
End With
또 다른 방법으로 값을 변수로 저장하고 변수를 수신처에 씁니다.
Sub foo3()
Dim x As Workbook
Dim y As Workbook
Dim vals as Variant
'## Open both workbooks first:
Set x = Workbooks.Open(" path to copying book ")
Set y = Workbooks.Open(" path to destination book ")
'Store the value in a variable:
vals = x.Sheets("name of sheet").Range("A1").Value
'Use the variable to assign a value to the other file/sheet:
y.Sheets("sheetname").Range("A1").Value = vals
'Close x:
x.Close
End Sub
위의 마지막 방법은 일반적으로 대부분의 애플리케이션에서 가장 빠르지만, 매우 큰 데이터 세트(100k 행)의 경우 클립보드가 실제로 어레이 덤프를 능가하는 것으로 관찰됩니다.
그러나 속도뿐만 아니라 다른 고려 사항도 있습니다. 클립보드와 상호 작용하지 않기 위해 대규모 데이터 세트에 대한 성능 저하가 트레이드오프 가치가 있을 수 있습니다.
셀을 사용하여 복사했습니다.
이 경우 데이터를 완전히 동일한 형식으로 복사하므로 Paste Special을 사용할 필요가 없습니다.
다음은 코드와 수정 사항입니다.
Dim x As Workbook, y As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Set x = Workbooks.Open("path to copying book")
Set y = Workbooks.Open("path to pasting book")
Set ws1 = x.Sheets("Sheet you want to copy from")
Set ws2 = y.Sheets("Sheet you want to copy to")
ws1.Cells.Copy ws2.cells
y.Close True
x.Close False
특수 붙여넣기를 원하는 경우 복사 원본에 동적 범위("주소")를 사용하십시오.
다음과 같이 합니다.
ws1.Range("Address").Copy: ws2.Range("A1").PasteSpecial xlPasteValues
y.Close True
x.Close False
다음 점에 주의해 주세요.:
의 뒤를 따라 결장하다.Copy
즉,Statement Separating
성격.
사용.Object.PasteSpecial
새 행에서 실행해야 합니다.
이게 당신을 즐겁게 해주길 바래요.
언급URL : https://stackoverflow.com/questions/19351832/copy-from-one-workbook-and-paste-into-another
'programing' 카테고리의 다른 글
Linux에서 Bash에서 syslog를 확인하는 방법 (0) | 2023.04.18 |
---|---|
WPF에서의 스크롤바의 이니블화 (0) | 2023.04.18 |
iOS 버전 확인 방법 (0) | 2023.04.18 |
목록 평탄화 (0) | 2023.04.18 |
Xcode: 타깃과 스킴이란 쉬운 언어로 무엇입니까? (0) | 2023.04.18 |