2014-10-14 3 views
2

"수평 데이터"라는 스프레드 시트에서 채워진 데이터를 가져 와서 "마스터 계획 데이터"라는 워크 시트에 붙여 넣기 위해 VBA 코드를 만들었지 만 Workbook (wb1)이 던지고 있습니다 형식 불일치 오류, 여기에 뭐가 잘못 되었나요?Excel VBA 문을 반환하는 형식이 일치하지 않음

Dim WBA as Variant  
Dim WB1, WB2 As Workbook 
Dim L As Long 

Set WB2 = ThisWorkbook 

MsgBox "Select Master Plan File" 
WBA = Application.GetOpenFilename(_ 
       FileFilter:="Excel Files (*.XLSX), *.XLSX", _ 
       Title:="Select Master Plan File") 
If WBA = False Then 
MsgBox "You have not selected a file" 
Exit Sub 
End If 
Set WB1 = Workbooks.Open(WBA) 

WB2.Activate 
With Worksheets("Master Plan Data") 
     .Rows("2:100000").Clear 
End With 


'ERROR BEGINS HERE 
With Workbooks(WB1) ' <-- Getting Type Mismatch here 
    Worksheets("HORIZONTAL_DATA").Cells.Select 
    Selection.Copy 
End With 

답변

3

Workbooks 개체는 확실히 통합 문서를 찾는 데 사용할 수 있습니다. 당신이 그것을 찾아 갈 필요가 없습니다 그래서, WB1에있어, 이미 은 당신이 재생하려는 통합 문서

Workbooks(42) 
Workbooks("paxsheet.xls") 

: 그러나, 숫자 인덱스 또는 통합 문서 이름 자체 중 하나가 필요합니다.

With Workbooks(WB1) ' <-- Getting type mismatch here ' 

로 :

그래서 변경

With WB1    ' <-- Should not get type mismatch here ' 

모두 잘해야한다.


, 당신이 통합 문서의 워크 시트 내 를 사용하고자하기 때문에 즉각적인 오류, 지정해야 넘어 .를 앞에하여 : 또한,

With WB1 
    .Worksheets("HORIZONTAL_DATA").Cells.Select 
    Selection.Copy 
End With 

가정 해당 사본 이외의 항목을 유지 관리 할 필요가없는 경우 을 먼저 복사하여없이 복사 할 수 있습니다.

With WB1 
    .Worksheets("HORIZONTAL_DATA").Cells.Copy 
End With 
하지만, 물론 그때는 그냥 모든 일을 단순화 할 수 있도록, 심지어는 with을 사용하는 꽤 쓸모가된다 :

WB1.Worksheets("HORIZONTAL_DATA").Cells.Copy 
+0

첫 번째 내부 라인이 기간로 시작해야하고 '.Copy'를 직접 적용 할 수 있습니다. '.Worksheets ("HORIZONTAL_DATA"). Cells.Copy' – Jeeped

+0

좋은 지적, @ 지프, 나는 그것을 부록에 포함시켰다. 물론, 그것은 전체'with'를 약간 불필요하게 만듭니다 :-) – paxdiablo

+0

그랬습니다! 고마워요. 내 다음 도전은 다른 질문의 형태로 올 것이지만 여기에 게시 할 수 있습니다. – PootyToot

관련 문제