programing

하나의 워크북에서 복사하여 다른 워크북에 붙여넣기

minimums 2023. 4. 18. 21:56
반응형

하나의 워크북에서 복사하여 다른 워크북에 붙여넣기

나는 다음과 같은 코드를 작성했고, 계속해서 본다.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

반응형