PowerPoint 매크로를 이용해 특정 슬라이드로 이동하거나, 특정 도형을 선택하고 싶은 경우가 있습니다. 단순히 Slides(i).Select 또는 Shape.Select msoTrue 를 사용하면 쉽게 될 것 같습니다만, 현재 작업창에서 어떤 개체나 어떤 창을 선택한 상태이냐에 따라 이게 매끄럽지 않은 경우가 있습니다.
예를 들어, 1번 슬라이드를 선택한 상태에서, 3번 슬라이드의 2번째 도형을 선택하라고 하면,
ActivePresentation.Slides(3).Shapes(2).Select msoTrue
이렇게 작성하면 해당 도형을 선택된 상태가 될 것 같지만, 오류가 발생됩니다. 해당 슬라이드가 활성화되어 있지 않기 때문입니다.
유사하게, 특정 슬라이드를 선택한 상태를 만들고 싶을 때에도
ActivePresentation.Slides(1).Select
이렇게 하면 될 것 같은데, 오류메세지는 발생하지 않지만, 이상하게도 화면이 전환이 되지 않은 상태로 매크로가 종료되는 경우가 종종 있습니다. 아마, 작업창에서 현재 작업 영역 또는 선택도니 상태에 따라서, 매크로가 비정상적으로 작동하는 것으로 판단됩니다.
가장 일반적인 작업 상태, 즉 PowerPoint를 처음 실행하면 활성화되는 상태로 현재상태를 만들어준 후, 원하는 개체(슬라이드나 도형)를 선택하도록 하면 매크로를 이용해 개체 선택을 변경하는 것이 매끄러워 집니다.
아래에 특정 도형이나 슬라이드를 선택한 상태를 만드는 함수 예시를 작성하였으니, 필요에 맞게 응용해서 사용하시면 되겠습니다.
Function SelectSlide(iSlideNum As Long)
ActiveWindow.ViewType = ppViewNormal
ActiveWindow.Panes(2).Activate
.Slides(iSlideNum).Select
End With
End Function
--------------------------------------------------------------
Function SelectShape(iShape As Shape)
Dim tObj, tSlide As Slide, i As Integer
For i = 1 To 5
Set tObj = tObj.Parent
If TypeName(tObj) = "Slide" Then Set tSlide = tObj: Exit For
Next
If Not tSlide Is Nothing Then
ActiveWindow.ViewType = ppViewNormal
ActiveWindow.Panes(2).Activate
tSlide.Select
iShape.Select msoTrue
End If
End Function
--------------------------------------------------------------
댓글 없음:
댓글 쓰기
의견이나 질문이 있으신 분은 언제든지 댓글을 달아주세요~