wb
이 기존 다중 워크 시트 통합 문서 인 코드가 있습니다. 나는 새 통합 문서가 생성 된 시트 "개요"중 하나를 복사하는 경우 - 왜 다음과 같은 오류가 말을 않는다 "개체 필요"?Worksheet.Copy가 새로 만든 통합 문서에 대한 참조를 반환하지 않는 이유
Dim wbCopy As Excel.Workbook
Set wbCopy = wb.Sheets("Overview").Copy
wb
이 기존 다중 워크 시트 통합 문서 인 코드가 있습니다. 나는 새 통합 문서가 생성 된 시트 "개요"중 하나를 복사하는 경우 - 왜 다음과 같은 오류가 말을 않는다 "개체 필요"?Worksheet.Copy가 새로 만든 통합 문서에 대한 참조를 반환하지 않는 이유
Dim wbCopy As Excel.Workbook
Set wbCopy = wb.Sheets("Overview").Copy
Worksheet.Copy
방법은 새로운 통합 문서에 대한 참조를 반환하지 않는다. 다음과 같이 워크 시트 참조를 사용할 수 있습니다.
Dim wsCopy As Excel.Worksheet 'changed from wb to wsCopy
아시겠지만 After 또는 Before 인수를 제공하지 않으면 새 통합 문서로 복사됩니다. 같은 통합 문서 내에서 복사가이 코드를 사용합니다 : 새 통합 문서에 시트를 복사하고,에 대한 참조를 유지하려면
Set wsCopy = wb.Worksheets("Overview")
wsCopy.Copy After:= wb.Worksheets(1) 'or Before:=
를, 다음이 단계에서 수행 할 필요가 :
Dim wbNew As Excel.Workbook
Dim wsCopied As Excel.Worksheet
Set wbNew = Workbooks.Add
wsCopy.Copy before:=wbNew.Worksheets(1)
Set wsCopied = wbNew.Worksheets(1)
새 통합 문서에 대한 참조 만 유지해야하는 경우 마지막 줄 및 wsCopied의 변수 선언을 생략하면됩니다.
이 당신이 중 하나를 사용해야하는 몇 가지 경우 중 하나입니다 Active*
개체
wb.Sheets("Overview").Copy
Set wbCopy = ActiveWorkbook
흠 - +1하지만 확실히 나중에 코드가 시작되면 * 액티브 피하기 위해 노력하고있어 혼란스러워. @AndyG 접근 방식을 시도해 보겠습니다. – whytheq
복사 한 직후에만 ActiveWorkbook이 필요합니다. 그때부터 변수를 사용하십시오. –
워크 시트 복사 방법이 통합 문서 개체가 아닌 부울 값을 반환하는 것으로 나타납니다. 통합 문서에 대한 참조를 설정하려면 다음을 사용할 수 있습니다.
Sub wbcopy()
Dim wbcopy As Excel.Workbook
Dim wbIndex As Excel.Workbook
Dim sArray() As String
Dim iIndex As Integer
Dim bfound As Boolean
Dim wb As Workbook
Set wb = ThisWorkbook
ReDim sArray(Workbooks.Count)
'Find the names of all the current workbooks
For Each wbIndex In Workbooks
sArray(iIndex) = wbIndex.FullName
Next wbIndex
'Copy the sheet to a new workbook
wb.Sheets("Overview").Copy
'Find the sheet with the new name
For Each wbIndex In Workbooks
bfound = False
For iIndex = LBound(sArray) To UBound(sArray)
If wbIndex.FullName = sArray(iIndex) Then
bfound = True
Exit For
End If
Next iIndex
If Not bfound Then
Set wbcopy = wbIndex
Exit For
End If
Next wbIndex
End Sub
나는 오늘도 똑같이 달렸습니다. 내게는 활성 객체가 너무 막연하여 시트 객체를 안정적으로 결정하는 방법을 찾았습니다. 는 사람이 찾고 그냥 경우, 여기에 파일입니다 :
작업을rn43x을 수행
dim sws, tws as worksheet
set sws = thisworkbook.sheets("source")
sws.copy before:=sws
set tws = sws.previous
OP가 새로운 통합 문서를 원한다고 생각합니다. 문제는 새 통합 문서에 대한 참조를 반환하는 것입니다. –
@chrisneilsen 이것은 나에게 발생했지만 OP에서 완전히 명확하지 않았습니다. 나는 이것을 할 수있는 방법을 내 대답에 추가했습니다. –
Worksheet.Copy는 'Set wbRef = wb.Sheets ("Overview")를 할 수 없기 때문에 새 통합 문서에 대한 참조를 반환하지 않습니다. chris는 새로운 통합 문서가 즉시 활성화된다는 사실을 이용합니다. –