2016-06-16 4 views
2

두 Excel 2007 Excelbook 통합 문서가 있습니다. 요약입니다. 요약rh 파일을 검사하여 그 안에있는 텍스트를 기반으로 특정 열을 찾습니다. 이 열을 찾아 복사하고 요약 시트에 데이터를 보내야합니다.값과 일치하고 다른 통합 문서로 데이터를 복사하는 VBA 선택 열

Sub Main() 

' Declare hr workbook file 
Dim rh As Excel.Workbook 

' initialise hr workbook file 
Set rh = Workbooks.Open("C:\Users\AC74338\Desktop\ac\rh") 

'select the rh file 
rh.Select 

'select the open worksheet 
Sheets("Open").Select 

' search for the column header that matches e.g. "Org Level 6" 
OrgLevel6 = WorksheetFunction.Match("Org Level 6", Rows("1:1"), 0) 
OrgLevel7 = WorksheetFunction.Match("Org Level 7", Rows("1:1"), 0) 

'activate this workbook where the code is 
ThisWorkbook.Activate 

'paste the data that was copied to this workbook in the NxNOpen worksheet 
ThisWorkbook.Sheets("NxNOpen").Columns(OrgLevel6).Copy Destination:=Sheets("Sheet2").Range("A1") 
ThisWorkbook.Sheets("NxNOpen").Columns(OrgLevel7).Copy Destination:=Sheets("Sheet2").Range("B1") 

End Sub 

데이터를 OrgLevel6 변수에 할당 할 때 디버깅을 수행하고 오류가 발생합니다. 누구든지이 문제를 해결하는 방법에 대한 제안이 있습니까? VB에서는 익숙하지 않으므로 간단한 실수 일 수 있습니다.

답변

3

VBA에서 WorksheetFunction을 사용하는 경우 VBA Range 참조를 계속 사용해야하므로 Rows(1:1)을 사용하는 대신 VBA 코드의 행을 참조해야합니다.

OrgLevel6 = WorksheetFunction.Match("Org Level 6", rh.Sheets("Open").Rows(1), 0) 
OrgLevel7 = WorksheetFunction.Match("Org Level 7", rh.Sheets("Open").Rows(1), 0) 
+0

코드로 편집 한 내용을 추가의 조직 레벨 6 열은 열 K에 있지만이 열 AD를 복사하고, 어떤 제안 왜? –

+0

'Match' 함수에서'Sheets ("Open")'을 가지고 있지만 실제로'Sheets ("NxNOpen")'에서 복사하고 있습니다 - 당신이 일관성있게 만들면 같은' 시트 '를 사용하여 일치시킵니다. – Jordan

+1

멋진 도움말, 내가 잘못된 시트를 참조하고있었습니다. 도움을 주셔서 감사합니다! –

0

변경 Rows(1)-Rows("1:1") 예를 들면 다음과 같습니다.

"열기"라는 워크 시트에서 일치 기능을 적용했지만 시트 "NxNOpen"에서 데이터를 복사하고 있습니다. 오른쪽 열, 잘못된 시트

+0

건배, Org 레벨 6이 포함 된 올바른 열 머리글과 일치하지 않는 이유에 대한 가능한 대답은 무엇입니까? –

+0

예. "Open"이라는 워크 시트에 Match 함수를 적용하고 있지만 "NxNOpen"시트의 데이터를 복사하고 있습니다. 오른쪽 열, 잘못된 시트. – lonestorm

+0

문제가 해결되었습니다. 감사합니다. –

0

나는 OrgLevel6 = 라인을 테스트했으며 하나의 시트에서 정상적으로 작동하므로 정확한 시트가 활성화되어 있지 않아서 "Org Level 6"을 찾을 수 없습니다.

아래의 코드 시도하십시오 Sheets("Open").Activate

0

Sheets("Open").Select을 변경해보십시오 :

Sub Main() 

' Declare hr workbook file 
Dim rh As Excel.Workbook 
Dim sum As Excel.Workbook 

Dim b As Integer 

' initialise hr workbook file 
Set rh = Workbooks.Open("C:\Users\AC74338\Desktop\ac\rh") 
Set sum = ThisWorkbook 


b = 1 

lcol = rh.Sheets("Open").Cells(1, Columns.Count).End(xlToLeft).Column 

For i = 1 To lcol 

If rh.Sheets("Open").Cells(1, i).Value = "Org Level 6" Or "Org Level 7" Then 

rh.Sheets("Open").Columns(i).Copy sum.Sheets("Sheet2").Cells(1, b) 
b = b + 1 

End If 

Next i 

End Sub 
+0

@Jordan이 오류에 관해서 문제를 해결했습니다.이 덕분에 여러 개의 열을 쉽게 선택할 수 있기 때문에 이것을 구현할 것입니다. –

+0

문제 없음. 건배 – Mohit

관련 문제