2016-12-27 8 views
1

Visio에서 Excel 통합 문서를 포함하고 포함 된 데이터에 대한 읽기/쓰기 작업을 수행하고 있습니다. Excel 데이터로 붙여 넣기 특수를 수행하면 선택한/복사 된 데이터뿐만 아니라 전체 통합 문서가 포함 된 것처럼 보입니다.OLE 포함 Excel 개체에서 ActiveSheet를 얻는 방법

Visio 페이지에 포함 된 Excel 통합 문서 개체에 대한 참조를 가져올 수 있지만 Visio에서 어떤 시트가 활성화되어 있고 표시되는지 알 수 없습니다. 시트를 편집 할 때 활성 시트가 ​​무엇인지 알 수있는 것 같습니다. 페이지에있을 때 통합 문서 개체는 ActiveSheet에 대해 Nothing을 반환하고 통합 문서에는 Windows가 없습니다. 창문이 없다는 것은 의미가 있지만 액티브 시트가 없다는 것은별로 의미가 없습니다.

'활성'시트가 Excel OLE 개체에 있는지 확인할 방법이 있습니까? 또는 모든 코드가 시트 1에 있다는 가정하에 작업을 작성해야합니까? 프로그래밍으로 임베디드 워크 북을 추가 할 것이기 때문에 각 책을 한 장으로 제한하는 것은 그리 큰 문제가 아니지만, 내가 바라는 부분이 없는지 확인하고 싶습니다. 원하는 것을 말해 줄 것입니다. .

페이지 엑셀 OLE 개체를 발견하고 통합 문서의 시트 1에서 셀 A1과 B1 설정하는 것이 코드 :

Dim CheckShp As Visio.Shape 
Dim CheckObj As OLEObject 
For Each CheckObj In ActivePage.OLEObjects 
    If CheckObj.ProgID Like "Excel.Sheet.*" Then 
     Dim Sheet As Excel.Worksheet 
     Dim Bk As Excel.Workbook 
     Set Bk = CheckObj.Object 
     Set Sheet = Bk.Worksheets(1) 

     Sheet.Cells(1, 1) = "HELLO" 
     Sheet.Cells(1, 2) = "WORLD" 

    End If 
Next CheckObj 
+0

당신은 어쨌든'Activating' 또는'Editing' 포함 된 OLE 개체가없는 통합 문서 객체에 대한 참조를 얻을 수 있을까? –

+2

지금까지 어떤 코드가 있습니까? – BruceWayne

+0

통합 문서에 대한 참조를 쉽게 얻을 수 있지만 OLE 개체를 편집하지 않을 때 표시되는 워크 시트에 대한 참조를 얻고 싶습니다. OLE 개체를 편집하지 않는 한 ActiveSheet는 통합 문서 개체가 아닙니다. –

답변

-1

당신은 당신이 경우 실제로는 아무것도없는 ActiveSheet을 필요가 없습니다 편집하지 말라. Bk.Worksheets를 통해 1에서 Worksheets.Count까지 반복하여 특정 이름을 가진 것을 찾을 수 있습니다.

또한, 인덱스는 이름이 될 수 있습니다, 그래서 이것은 작동합니다 :

Set Sheet = Bk.Worksheets("MySpecificSheet") 
+0

질문은 '표시되는 시트의 이름은 무엇입니까'입니다. 나는 특정한 장을 얻는 방법을 안다. 문제는 OLE 객체가 어떤 시트를 표시하는지 찾는 방법입니다. –

+0

죄송합니다. 질문에 대해 오해했습니다. 그 대답은 "시트가 없기 때문에 이름이 없습니다. 그렇지 않으면 액티브 시트가됩니다." –

+0

엑셀 개체가 화면에 활발하게 렌더링되지 않고 OLE가 나에게 그래픽을 보여주고 있음을 이해합니다. 시트가 렌더링 된 마지막 시간 정말 통합 문서 개체 또는 표시 할 렌더링 된 시트의 이름을 알려주는 OLE 개체 속성이 있는지 찾고 있어요. –