2011-08-08 7 views
6

현재 통합 문서에서 다른 통합 문서를 어떻게 활성화합니까? 현재 통합 문서 dumb.xls 및 다른 통합 문서 이름을 Tire.xls.I로 열었습니다. worksbooks.open filename:= "name of the file"을 사용하여 dumb.xls에서 Tire.xls를 열었습니다. 열려는 중이지만 문제는 작동하지 않습니다.특정 통합 문서와 특정 시트를 어떻게 활성화합니까?

만약 제가 cells(2,24).value=24이 dumb.xls의 셀에이 값을 넣었지만 하나의 Tire.xls가되기를 원합니다.

activesheet.cells(2,24).value=24은 Tire.xls에 표시합니다. 그러나 통합 문서를 어떻게 활성화합니까? 3 ~ 4 개의 워크 북을 열어야하고 작업을 수행해야합니까? 나는 특정 통합 문서

을 활성화 할 방법은 구글

에이 코드
 activeworkbook.worksheet("sheetname").activate ' but not working 
    windows("sheetname").activate ' people on google suggested not to use 

그것이 작동 안한다을 발견했다. 나는 그것이 작동하게하는 방법을 모른다. 누구나 말해 줄 수 있습니까 특정 통합 문서와 다른 통합 문서의 특정 시트를 어떻게 활성화합니까?

예 : niko.xls 및 niko_2.xls를 dumb.xls 통합 문서의 통합 문서로 열어서 전체적으로 3 개의 통합 문서가 있고 niko_2.xls 통합 문서의 두 번째 시트를 활성화해야합니다. 어떻게 작성합니까? 누구든지 나에게이 예제 구문을 설명 할 수 있습니까?

답변

14

당신은 시트를 활성화 할 필요가 없습니다를 (당신은 엄청난 성능 저하 할게요 그렇게하기 위해, 실제로). "wb"로 시작하는 메서드를 호출 할 때 시트의 개체를 선언하기 때문에 당신은 그 객체를 선택합니다. 예를 들어 다음과 같은 항목을 활성화하지 않고도 통합 문서간에 이동할 수 있습니다.

Sub Test() 

Dim wb1 As Excel.Workbook 
Set wb1 = Workbooks.Open("C:\Documents and Settings\xxxx\Desktop\test1.xls") 
Dim wb2 As Excel.Workbook 
Set wb2 = Workbooks.Open("C:\Documents and Settings\xxxx\Desktop\test2.xls") 

wb1.Sheets("Sheet1").Cells(1, 1).Value = 24 
wb2.Sheets("Sheet1").Cells(1, 1).Value = 24 
wb1.Sheets("Sheet1").Cells(2, 1).Value = 54 

End Sub 
+0

아무도 내가 왜 위의 "컴파일 오류 - 잘못된 문자"오류를 복사/붙여 넣기 줄 것이라고 실마리 있어요? –

+1

확실하지 않습니다. 나는 누가 일본어 키보드를 사용하고 있는지 알고있다. 아마도 백 슬래시 또는 다른 문자 코드가 다를 것이다. txt 파일에 붙여 넣기 한 다음 Excel에 붙여 넣으십시오. Sub Test()에서 " '"문자를 발견 했으므로 삭제했습니다. – aevanko

0
Dim Wb As Excel.Workbook 
Set Wb = Workbooks.Open(file_path) 
Wb.Sheets("Sheet1").Cells(2,24).Value = 24 
Wb.Close 

당신이를 사용할 수 있습니다 Wb.Sheets("sheetname")에서 참조 할 수 시트 이름을 알고 사전에 감사합니다 :

Dim sht as Worksheet  
For Each sht In tempWB.Sheets 
    Debug.Print sht.Name 
Next sht 
+0

죄송합니다. 시트를 활성화하려면 어떻게해야합니까?귀하의 퍼팅 일부 값을 내가 그것을 정렬보다 통합 문서에서 모든 정렬 및 작업을 수행하려면? Wb.sheets ("sheet1")을 항상 표시해야합니까 ...... 알고 싶습니까? – niko

4

열려있는 통합 문서에 대한 참조를 설정해야합니다. 그런 다음 참조를 사용하여 해당 통합 문서에서 원하는 모든 작업을 수행 할 수 있습니다.

Dim wkb As Workbook 
Dim sht As Worksheet 

Set wkb = Workbooks.Open("Tire.xls") 
Set sht = wkb.Sheets("Sheet2") 

sht.Activate 
sht.Cells(2, 1) = 123 

기타 .Activate가 귀하의 경우 불필요한 될 수 있음을 지적 :

Dim wkb As Workbook 
Set wkb = Workbooks.Open("Tire.xls") ' open workbook and set reference! 

wkb.Sheets("Sheet1").Activate 
wkb.Sheets("Sheet1").Cells(2, 1).Value = 123 

도 나중에 쉽게 할 것이다 시트에 대한 참조를 설정할 수 있습니다. 엄격하게 셀을 편집하기 전에 시트를 활성화 할 필요는 없습니다. 그러나 그것이 당신이하고 싶은 일이라면, 활성화에 아무런 해가되지 않습니다. 단지 한 번 또는 몇 번만하는 한 눈에 띄지 않아야하는 작은 히트를 제외하고는. 그러나 여러 번 활성화하면 예 : 루프를 실행하면 작업 속도가 크게 느려지므로 활성화를 피해야합니다. 나를 위해 일한

+0

select와 같이 활성화하면 성능에 큰 타격을줍니다. 예를 들어 위의 절차를 10,000 번 반복하고 활성화하면 약 8 초가 걸립니다. 한 줄이 없다면 0.375 초 밖에 걸리지 않습니다. 물론 결과는 기계마다 다릅니다. – aevanko

+0

나는 선택을 피하고 활성화하는 것의 큰 차이점을 발견 한 것에 놀랐다는 것을 인정할 것이다. 다음은 몇 가지 REF입니다 (성능이 성능에 영향을 미친다는 언급). http://msdn.microsoft.com/en-us/library/ff726673.aspx – aevanko

+0

그래, 좋은 지적이지만, OP가 루핑되지 않는다면 눈에 띄지 않을 것이다. 나는 그 대답에 그 발언을 덧붙일 것이다. –

0

코드는 다음과 같습니다

ThisWorkbook.Sheets("sheetName").Activate 
+0

워크 시트를 선택하기 위해 여기에서 언급 한 모든 방법을 시도했습니다 (사실 하나의 워크 시트에서 다른 워크 시트로 전환 함). 그러나 "Application or object defined error"가 나타납니다. 워크 시트가 있습니다. (msgbox를 통해이를 확인하는 코드가 추가되었습니다.) 안내하십시오. – user1175126

0

당신이 시도 할 수 있습니다이

Windows("name.xls").Activate 
+1

대답이 왜 2,5 년 이상 유용했는지 설명해야합니다. 다른 대답과 관련하여 그것을 테스트 했습니까? – manuell

0

을 시도합니다.

Workbooks("Tire.xls").Activate 

ThisWorkbook.Sheets("Sheet1").Select 
Cells(2,24).value=24 
관련 문제