2012-07-06 2 views
0

매크로를 사용하여 다른 통합 문서의 일부 데이터를 복사하고 매크로가있는 통합 문서의 시트에 붙여 넣습니다. 나는 여기에 외부 통합 문서 파일 경로 얻기 위해 내가 다른 스레드에서 적응이 기능을 사용하고 있습니다 : 그것은 작동하고 내가 열 통합 문서를 얻을 수있어,하지만런타임 13 외부 통합 문서에서 범위를 저장하려고 할 때 오류가 발생했습니다.

Public Function RetrieveFileName() As String 

    'Show the open dialog and pass the selected file name to the String variable "sFileName" 
    RetrieveFileName = Application.GetOpenFilename 

    'They have cancelled. 
    If RetrieveFileName = "False" Then 
     Exit Function 
    End If 

End Function 

을 나는를 저장하려고 할 때 범위 외부의 통합 문서 (마지막 스 니펫 아래에있는 줄)에서 vba throw합니다 런타임 오류 '13': 형식 불일치.

Sub CreateSystemExtracts() 
Dim thisRow As Long, wbkCheck As Long 
Dim countryFilter As String, systemFilter As String 
Dim sourceBook As Workbook 
Dim sourceHeaders As Range 

'Ask user where source data sits 
Set sourceBook = Workbooks.Open(RetrieveFileName()) 

'Make sure they provided a source 
If sourceBook Is Nothing Then 
    MsgBox "You must select a source file to continue, macro halted." 
    Exit Sub 
End If 

'Check if number of rows in the selected file matches what we expect 
sourceHeaders = Workbooks(sourceBook).Worksheets(Sheet1).Range("A2:X2") 

어디에서 잘못 될지 알려주실 수 있습니까? 나는 그것이 마지막 줄에서 범위를 선언하는 방식과 관련이 있다고 생각하지만 여러 가지 다른 방법을 시도하고 모두 런타임 오류 13을줍니다.

미리 감사드립니다! 그냥 그 여전히 런타임 오류를 던지고 시도 - 개체 변수를 할당 할 때

답변

0

당신은 Set

'Check if number of rows in the selected file matches what we expect 
Set sourceHeaders = Workbooks(sourceBook).Worksheets("Sheet1").Range("A2:X2") 
+0

감사합니다 팀을 사용해야합니다. 그러나 내가 생각할 수있는 범위 참조의 모든 다른 유형을 반복하여 작동하도록 만들 수있었습니다. 마지막으로 작업 한 것은 다음과 같습니다. Set sourceHeaders = sourceBook.Sheets (1) .Range ("A2 : X2") - 이것이 올바른 구문 인 이유는 무엇입니까? – l85m

+0

업데이트보기 - 'Sheet1'이 변수 이름이 아닌 경우 따옴표로 묶어야합니다. 당신이 그것을 사용 하든지'Sheets (1)'을 사용하든간에 열리는 통합 문서의 구조에 대해 얼마나 많이 알고 있는지에 달려 있습니다 ... –

관련 문제