2011-12-19 3 views
5

비교적 간단한 문제를 해결하려고하지만이를 알 수 없습니다. 내 목표는 Excel 응용 프로그램의 워크 시트에있는 셀 범위를 두 번째 새로 만든 Excel 응용 프로그램의 워크 시트에있는 같은 범위의 다른 범위로 복사하는 것입니다. 나는 두 번째 응용 프로그램을 사용하여 만듭니다VB : 범위를 다른 Excel 응용 프로그램에 복사

Set secondExApp = CreateObject("Excel.Application") 

나는 추가 처리를 위해이 참고 자료를 사용하고 있습니다. 지금까지 두 가지 방법을 시도했습니다. 둘 다 제대로 작동하지 않습니다.

0 : 제조/소개

Set srcWb = Application.ActiveWorkbook 
Set srcSheet = srcWb.Worksheets("example") 

Set dstApp = CreateObject("Excel.Application") 
Set dstWb = dstApp.Workbooks(1) 
Set dstSheet = dstWb.Worksheets(1) 

1 : PasteSpecial은 - 화상을 얻어 대신 단지 범위

srcSheet.Range("A1:B2").Copy 
dstSheet.Range("A1:B2").PasteSpecial xlPasteAll 

2 : Range.Copy [대상 (!) ] - 작동하지 않습니다. - 동일한 애플리케이션의 시트에만이 방법을 사용할 수 있습니까?

srcSheet.Range(srcSheet.Cells(..., ...), srcSheet.Cells(..., ...)).Copy _ 
dstSheet.Range(dstSheet.Cells(..., ...), dstSheet.Cells(..., ...)) 

도움을 주시면 감사하겠습니다.


편집 : 나는 이미 "레코드 매크로"기능을 해본 적이 있지만 '선택'하지 않고 내 자신에 코딩 또는 "활성화"선호 세포/시트/등


편집 ( 해결) : 모두 GSerg 및 iDevlop 아주 많이, 당신은 나를 위해 좋은 또 다른 출발점을 제공 주셔서 감사합니다. xlClipboardFormatDspText과 같은 Excel 상수에 관한 연구를 수행했습니다.

실제로 새로운 Excel 인스턴스를 열면 붙여 넣기 (특수) 메뉴가 변경된다는 사실이 정말로 도움이 되었습니까?

이제 새 인스턴스를 만드는 대신 통합 문서 (숨길 수 있음)를 추가하고이 개체를 사용하여 내 콘텐츠를 추가 할 수 있습니다. 동일한 인스턴스 (작업 관리자를 살펴볼 수도 있음)에 있기 때문에 붙여 넣기 (특수) 메뉴는 완전히 동일합니다.

이제 선택 없이도 Range.Copy [destination]을 사용할 수 있습니다!

결과 :

'Hides the new workbook 
Application.ScreenUpdating = False 

Set dstWb = Workbooks.Add 
Set dstSheet = dstWb.Worksheets(1) 

srcSheet.Range(srcSheet.Cells(..., ...), srcSheet.Cells(..., ...)).Copy 
dstSheet.Paste dstSheet.Range(dstSheet.Cells(..., ...), dstSheet.Cells(..., ...)) 

'Avoids the often seen dashed border around the copied range 
Application.CutCopyMode = False 

'Setting the initial change back 
Application.ScreenUpdating = True 

소프트웨어 : Excel 2007의

+0

동일한 Excel 인스턴스에서 다른 통합 문서 대신 다른 Excel 응용 프로그램을 사용하는 이유는 무엇입니까? 내가 볼 수있는 유일한 보너스는 거대한 계산을 위해 듀얼 코어 프로세서를 이용하는 것입니다. 그러나 필요하지 않으면 느려집니다. –

+0

@iDevlop 얼마나 재밌 네요. 나는 나 자신에 대해 알아 낸 후에 당신의 의견을 읽었을뿐입니다. 매우 유용한 코멘트! – Mic

답변

4

막대기로 Excel을 파고의 결정에 따라, 당신이 간 엑셀 물건 Worksheet.Paste을 사용해야합니다 :

srcSheet.Range("A1:B2").Copy 
dstSheet.Paste dstSheet.Range("A1") 

0 Worksheet.PasteSpecial 활성 셀을 사용하기 때문에

srcSheet.Range("A1:B2").Copy 
dstSheet.Range("A1").Select 
dstSheet.PasteSpecial xlClipboardFormatDspText, False 

그러나이 먼저 dstSheet에 셀을 선택이 필요 않습니다 xlClipboardFormatDspText으로 클립 보드에서 붙여 넣을 때 두꺼운 스틱

파고 엑셀 수식이 유지 얻을 것으로 나타났다.

+0

GSerg에 감사드립니다! ** 수식 **이 전송되지 않는다는 사실을 제외하고는 정상적으로 작동합니다. 수식을 포함 할 수있는 방법이 있습니까? 그리고 PasteSpecial 메서드가 작동하지 않는 이유는 무엇입니까? – Mic

+0

@Mic 작동하지만 원하는 형식을 사용하지는 않습니다. 내 편집을 참조하십시오. – GSerg

+0

@Mic Ok, 다른 편집. 일하는 것 같습니다. – GSerg

관련 문제