2016-08-15 5 views
0

자동화를 위해 Excel 2010을 사용하고 있습니다.VBA - 다른 파일의 고정 창

With CreateObject("Excel.Application") 
    Set NewBook = .Workbooks.Add 
    .Visible = True 
End With 

With NewBook 
    Set WS = NewBook.Sheets("Sheet1") 
End With 

을 그리고 지금은 동결 창을 만들고 싶습니다 : 한마디로

, 나는이 방법으로 새 ​​통합 문서를 만듭니다. 내가 this page에로ActiveWindow을 선택하여 시도했습니다

는 : 다른 파일을 편집 할 때

WS.Range("F4").Select 
ActiveWindow.FreezePanes = True 

은 어떻게 든, ALL 기타 사항 서보 -OFF 방법은 항상 대신 추가 된 책의 원본 파일을 선택합니다.

나는 다음 this page 쳐다 보면서 시도 :

NewBook.activate 
With ActiveWindow 
    If .FreezePanes Then .FreezePanes = False 
    .SplitColumn = 5 
    .SplitRow = 4 
    .FreezePanes = True 
End With 

없음 사용, 창은 원본 파일에 작성됩니다 동결.

도 아니다 다음 작업을 수행합니다 내 .activate 방법은 잘못, 또는 ActiveWindow 잘못, 또는 어쩌면 ALL 기타 사항 서보 -OFF가 잘못되면

With NewBook 
    If .FreezePanes Then .FreezePanes = False 
    .SplitColumn = 5 
    .SplitRow = 4 
    .FreezePanes = True 
End With 

확실하지 않음을. 누구에게나 많은 도움을 주실 수 있습니다.

+0

고정 창을 만들려면 VBA가 항상 ActiveWindow를 필요로하는 것 같습니다. 주변을 둘러 볼 방법이 있습니까? –

+0

아니요. 워크 시트가 아니라 창의 속성입니다. 'NewBook.Application.ActiveWindow.FreezePanes = True' 또는'NewBook.Windows (1) .FreezePanes = True'를 사용해야합니다. – Rory

+1

Excel의 새 인스턴스를 만들고 있으므로이 인스턴스를 명시 적으로 참조해야합니다. –

답변

0

나는 msgbox 문장을 선택적으로 사용하여 코드를 디버깅하려고합니다. newbook.activate 또는 with 루프를 실행하고 현재 통합 문서 또는 워크 시트의 이름을 출력하기 전에 msgbox 문을 배치하는 중입니다. Excel에서 현재 활성화 된 것으로 보이는 통합 문서를 알려줍니다. 또한

... https://msdn.microsoft.com/en-us/library/office/ff835568.aspxhttps://msdn.microsoft.com/en-us/library/office/ff195422.aspx

어쩌면 당신이 만든 새 통합 문서의 이름을 인식하지 못합니다 엑셀. 그러나 각 통합 문서에는 만든 순서대로 고유 한 인덱스가있는 것처럼 보입니다. 아마도 인덱스로 통합 문서를 참조하십시오.

0

ActiveWindow를 사용하는 대신 새 통합 문서의 첫 번째 (실제로는 고유 한) 창을 한정하십시오. 통합 문서에 여러 장이 있으면 필수 조건이 있습니다. 통합 문서에서 올바른 시트에 FreezePane을 적용하려면 통합 문서에서 원하는 시트를 활성화해야합니다.

NewBook.Sheets("DesiredSheet").Activate 
With NewBook.Windows(1) 
    If .FreezePanes Then .FreezePanes = False 
    .SplitColumn = 0 
    .SplitRow = 1 
    .FreezePanes = True 
End With