2014-10-16 2 views
0

내가 VBA에 관해서는 초보자라는 것을 인정함으로써 시작하겠습니다. (지난 2 일 동안이 사이트의 팁으로 멋진 일을 해내었지만 연령). 그러나 나는이 것을 완전히 밟았다.Excel VBA : 다른 통합 문서에 데이터를 복사하는 고급 필터

한 워크 시트에는 검색 인터페이스가 있고 다른 워크 시트에는 데이터베이스가있는 통합 문서가 있습니다. 지금이 통합 문서에이 워크 시트를 분리하려고

Private Sub Find_Click() 
    Sheet2.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _ 
    CriteriaRange:=Sheet4.Range("V1:AE2"), CopyToRange:=Sheet4.Range("E1:T1"), Unique:=False 
End Sub 

: 이 내가 검색 인터페이스 워크 시트에서 값을 반환하는 데이터베이스에 고급 필터를 수행하는 데 사용하는 코드입니다. 따라서 고급 필터는 통합 문서 "데이터"에 포함 된 데이터에 대해 수행되고 결과는 통합 문서 "SearchInterface"에 반환됩니다. 두 개의 통합 문서는 항상 동시에 열립니다. 나는 많은 것들을 시도했지만 아무것도 작동하지 않습니다

wbData.Sheet2.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy 

에 구문 오류가

Private Sub Find_Click() 
Set wbSearch = ThisWorkbook 
Set wbData = Workbooks("GAL_db.xlsx") 

     wbData.Sheet2.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, 
     CriteriaRange:=wbSearch.Sheet4.Range("V1:AE2"), CopyToRange:=wbSearch.Sheet4.Range("E1:T1"), Unique:=False 

End Sub 

:

나는 삽입 변수를 시도했다. 너무 지식이 많지 않아서, 나는 어둠 속에서 꽤나 총을 쏜다. 어떤 도움이나 방향을 주시면 감사하겠습니다.

== 업데이트 === 입력 로리에 대한

감사합니다! 내가 다시 구문 오류를 받고 있어요

이제
Private Sub Find_Click() 
Set wbData = Workbooks("GAL_db.xlsx") 

     wbData.Sheets("Sheet2").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, 
     CriteriaRange:=Sheet4.Range("V1:AE2"), CopyToRange:=Sheet4.Range("E1:T1"), Unique:=False 

End Sub 

:

wbData.Sheets("Sheet2").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, 

Private Sub Find_Click()하는 것은 노란색으로 강조 표시됩니다

+0

오류 메시지 및 해당 줄? –

+3

다른 통합 문서에서 워크 시트의 코드 네임을 사용할 수 없습니다 (참조 세트가없는 경우). 그래서 wbData.Sheet2가 아니라'wbData.Sheets ("Sheet2")'를 사용해야합니다 (시트 이름 조정 필요한 경우). – Rory

+0

'Sheets ("Sheet2")를 변경 한 후에 컴파일 오류가 발생했습니다 : "CriteriaRange : ="다음에 예상되는 표현 – acadie

답변

0

글쎄, 시행 착오를 통해 나는 그것을 작동 시켰어! 이봐! 이유를 모르겠지만 Sheet4를 워크 시트 (1)로 참조하는 경우에만 작동합니다. 내 목적에 부합하는 코드는 다음과 같습니다.

Private Sub Find_Click() 
Dim wbData As Range 
Dim wbCriteria As Range 
Dim wbExtract As Range 

Set wbData = Workbooks("GAL_db.xlsx").Worksheets("data").Range("A1") 
Set wbCriteria = ThisWorkbook.Worksheets(1).Range("V1:AE2") 
Set wbExtract = ThisWorkbook.Worksheets(1).Range("E1:T1") 

     wbData.CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _ 
     CriteriaRange:=wbCriteria, CopyToRange:=wbExtract, Unique:=False 

End Sub 
0

내 생각은 ...이에 제안 나는 코드를 변경 당신은 당신이 가지고 있던 2 가지 솔루션의 조합을 찾고 있습니다 ...

Private Sub Find_Click() 
Set wbSearch = ThisWorkbook 
Set wbData = Workbooks("GAL_db.xlsx") 

     wbData.Sheets("Sheet2").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, 
     CriteriaRange:=wbSearch.Sheets("Sheet4").Range("V1:AE2"), CopyToRange:=wbSearch.Sheets("Sheet4").Range("E1:T1"), Unique:=False 

End Sub 
+0

thx 무례한 사람! 그러나 나는 여전히 그 줄을 얻고있다.'wbData.Sheets ("Sheet2") 행의 구문 오류. 범위 ("A1"). CurrentRegion.AdvancedFilter Action : = xlFilterCopy,'. 대신이 작업에 다른 방법으로 접근해야합니까? – acadie

+0

정확한 오류는 무엇입니까? 어쩌면 스크린 샷일까요? –

+0

"컴파일 오류 : 구문 오류" – acadie

관련 문제