2013-04-30 5 views
0

TextRange 개체가 있다고 가정하고 TextRange이 포함 된 Shape을 찾아야합니다.TextRange부터 시작하여, 포함 된 Shape를 찾으려면 어떻게해야합니까?

일반적으로, 나는 Shape를 얻기 위해 다시 Parent 속성을 사용하여 다음을 포함하는 TextFrame를 얻기 위해 TextRangeParent 속성을 사용 할 수 있습니다. 텍스트 테이블 셀 내 그러나

는 상기 TextRangeParent 속성 Nothing이다. (저는 이것이 PowerPoint 2010의 "기능"이라고 생각합니다). EDIT : Selection.TextRange를 통해 TextRange에 액세스 할 때를 제외하고는 그렇지 않습니다.

모양을 식별 할 수있는 다른 방법이 있습니까 (이 경우 표 셀이 될 수 있습니까)?

UPDATE : KazJaw 덕분에, 나는 다시 살펴 보았다, 그리고 내가 내가 Selection.TextRange로부터 얻은부터있어 TextRange하지 않는 한 Parent 체인을 탐색 할 수 있습니다 밝혀졌습니다. 내 목적을 위해, 이것은 덜 문제가되지 않습니다.

+0

당신이 당신의 코드와 요구의 넓은면을 보여줄 수 ?? –

+0

@ KazJaw :'Parent '계층 구조를 탐색하여'Shape '에 도달 할 수 있는지 여부에 의존하는 많은 양의 레거시 코드가 있습니다. 하나의 예 (많은 것)로서, 나는 셰이프의 일부만을 포함하는'TextRange'에서 시작하여 셰이프의 전체 텍스트에 대해'TextRange'를 얻고 싶습니다. 이렇게하기 위해, 나는'Shape'으로 가서 그걸로 연결된'TextRange'를 얻습니다. 그러나 그것은 하나의 예일뿐입니다. –

+0

해결 방법에 대해 생각할 때 '넓은 측면'에 대해 질문했습니다. 어쨌든 몇 가지 테스트를했는데 문제가되는 것 같습니다. 그러나 테이블과 텍스트 내의 모든 셀을 염두에두고 예상대로 'TextRange.Parent' 결과는'TextFrame'이며 예상대로'TextRange.Parent.Parent' >> Shape', TextRange.Parent.Parent.Parent ''Slide'는 예상치 못한 결과입니다. 네가 가진 '아무것도'를 만날 수 없다. –

답변

1

아래의 주석에 대한 추가 논의에 따르면 실제 문제는 선택 개체를 나타냅니다. 하나는 테이블 내에서 텍스트를 선택하면 다음 즉시에서 만든 몇 가지 테스트는 다음과 같은 결과를 가지고 다른 프로그래머도

? Typename(ActiveWindow.Selection.TextRange) 
TextRange 
? Typename(ActiveWindow.Selection.TextRange.Parent) 
Nothing 
? Typename(ActiveWindow.Selection.TextRange.Parent.Parent) 
'>>Error 

추가 정보합니다. 다음은 질문에 대답하기위한 약간의 테스트를 만들기에 약간 혼란스러운 것을 발견했습니다.

Sub Test_To_SO() 
    Dim SL As Slide 
    Set SL = ActivePresentation.Slides(1) 

    Debug.Print TypeName(SL.Shapes(1).Table.Cell(1, 1).Shape.TextFrame.TextRange.Parent) 
     'result >> TextFrame 
    Debug.Print TypeName(SL.Shapes(1).Table.Cell(1, 1).Shape.TextFrame.TextRange.Parent.Parent) 
     'result >> Shape 
    Debug.Print TypeName(SL.Shapes(1).Table.Cell(1, 1).Shape.TextFrame.TextRange.Parent.Parent.Parent) 
     'result >> Slide !! 

End Sub 
0

그것은 당신이 선택을 통해이 얻을 수없는 너무 많은 아니라 (텍스트로 채워진 하나 개의 슬라이드, 거기에 하나 개의 테이블과 몇 가지 세포와 간단한 프리젠 테이션을 위해), 그것은 때로는했습니다 무엇의 문제 선택된. 개체 모델이 테이블 셀의 텍스트에 대해 손상되었습니다. 언급했듯이 ActiveWindow.Selection.TextRange.Parent는 선택된 테이블 셀 텍스트에 대해 아무 것도 반환하지 않습니다.

다른 텍스트 :

Sub GetParentShape() 
    Dim oSh As Shape 
    With ActiveWindow.Selection 
     'Type might be None, Slides or one of the following: 
     If .Type = ppSelectionShapes Then 
      Set oSh = ActiveWindow.Selection.ShapeRange(1) 
     End If 
     If .Type = ppSelectionText Then 
      Set oSh = ActiveWindow.Selection.TextRange.Parent.Parent 
     End If 

     Debug.Print oSh.Name 

    End With 
End Sub