2016-10-05 3 views
0

다른 게시물을 읽었지만 특정 응용 프로그램에서 여전히 불안정합니다.이 역시 적용하려고합니다.데이터를 복사 할 VBA 매크로

문제 :

나는 나는 현재 통합 문서에 폐쇄 된 엑셀 파일에서 데이터를 복사하려고 나는 파일을 검색 할 수 다음 매크로 할 일을하고 싶습니다. 나머지.

해결 시도 :

나는 말한다 대상 통합 문서에 오류가 무엇입니까 "응용 프로그램 정의 또는 개체가 오류를 정의합니다." 이것은 매우 기초적이지만 아래는 제가 지금까지 가지고있는 것입니다. 대상은 내가 여는 통합 문서이고 y는 현재 문서이거나 적어도 있어야합니다!

Option Explicit 
Sub getfilename() 

Dim myFilePath As String 
Dim target As Workbook, y As Workbook 

myFilePath = Application.GetOpenFilename() 

'copying 
Set target = Workbooks.Open(myFilePath) 

target.Sheets("Sheet1").Range("R9C2:R20C2").Copy 

'pasting 
Set y = ActiveWorkbook 

y.Sheets("Adjustment").Cells("R57C4").PasteSpecial 

'close 
target.Close 

End Sub 

이것은이 프로젝트의 시작일뿐입니다. 데이터를 저장하고 붙여 넣기 전에 약간 조작해야하지만, 먼저이 문제를 파악할 수 있는지 확인하려고했습니다. 모든 도움을 주시면 감사하겠습니다.

+0

범위를 가져 오는 데 R1C1 표기법을 사용하는 특별한 이유가 있습니까? 왜 그 표기법을 사용하는지에 달려 있습니다. – Werrf

+0

Parti 없음 cular 이유는 항상 R1C1을 사용했습니다. – ct4242

+1

'y.Sheets ("Adjustment"). 셀 (57, 4) .PasteSpecial'을 사용하십시오. – Jeeped

답변

4

RANGE 개체는 R1C1 표기법보다는 A1 표기법을 필요로합니다. 세포가 당신도, 거기 R..C .. 구조가 필요하지 않습니다 불구하고 (행 번호와 열 번호를 사용할 수있는 객체.

Sub getfilename() 

Dim myFilePath As String 
Dim target As Workbook, y As Workbook 

myFilePath = Application.GetOpenFilename() 

Set y = ActiveWorkbook 

'copying 
Set target = Workbooks.Open(myFilePath) 

'Here we're using the A1 notation 
target.Sheets("Sheet1").Range("B2","B9").Copy 

'Here we're using the Row & Column numbers notation 
y.Sheets("Adjustment").Cells(57, 4).PasteSpecial 

'close 
target.Close 

End Sub 

또한, 당신은 실제로 복사를 사용할 필요가 없습니다 PasteSpecial 메서드를 사용하여 값을 복제 할 수 있습니다. 이렇게 작은 매크로에서는 너무 큰 거래가 아니지만 큰 프로세스에서는 target.Range ("A1", " A10 "). value = source.Range ("A1 ","A10 "). 값

+0

위대한 작품입니다. 감사합니다! – ct4242

+0

Copy/PasteSpecial을 사용하지 않는 또 다른 이유는 클립 보드를 통해 전달된다는 사실입니다. 매크로가 백그라운드에서 실행되고 사용자가 복사/붙여 넣기를 수행하는 동안 아무 것도하지 않으면 결과가 비참해질 수 있습니다 . +1 사용에 대한 추천! – YowE3K