[취미로 배우는 파포VBA] 02 : 도형 보이기/숨기기
1) 메세지 박스 띄우는 법
2) 서브루틴을 만들고 도형 클릭과 연결 하는 법
이제 임의의 도형을 보이거나 숨기는 함수를 만들어 보고자 합니다.
물론 파포에서 기본적으로 제공하는 애니메이션 기능을 사용해서 만들 수도 있지만
보다 복잡한 동작을 하려면 프로그래밍 방식이 더 유리 할 것입니다.
그런데 파포 VBA에서 도형을 제어하려면 어떤 도형이 있는지 알아야 할 것 입니다.
어떤 도형이 있는지 확인을 하기 위하여 Test서브루틴(앞으로 그냥 함수라고 할 것임)을
만들어서 현재 파포에 있는 Shape들을 모두 메세지 박스로 띄워 보려고 합니다.
어찌어찌 해서 만든 Test함수는 다음과 같습니다.
-------[ Test 함수 ]---------------------------------------------
Sub Test()
Dim iTotalShape, iTotalSlide, LP01, LP02 As Integer
iTotalSlide = ActivePresentation.Slides.Count '전체 슬라이드 갯수 확인
For LP01 = 1 To iTotalSlide Step 1
iTotalShape = ActivePresentation.Slides(LP01).Shapes.Count ' 해당 슬라이드내의 전체 Shape갯수 확인
For LP02 = 1 To iTotalShape Step 1
MsgBox ("SLIDE=" & LP01 & ",SHAPE=" & LP02 & "> " & ActivePresentation.Slides(LP01).Shapes(LP02).Name) ' "슬라이드번호, Shape순번> Shape이름" 출력
Next LP02
Next LP01
End Sub
------------------------------------------------------------------------
이를 통해서 별첨된 파일내의 도형들은 다음과 같이 리포팅 됩니다.
SLIDE=1, SHAPE1> Rounded Rectangle 3
SLIDE=1, SHAPE2> Rounded Rectangle 4
SLIDE=1, SHAPE3> Rounded Rectangle 5
SLIDE=1, SHAPE4> 타원 6
SLIDE=1, SHAPE5> TextBox 15
도형 1,2,3은 버튼용으로 삽입한 "라운드형 사각형" 3개이며
""타원 6"은 보이기/숨기기를 할 얼굴 모양 도형입니다.
마지막의 텍스트박스는 제목용 텍스트박스입니다.
이제 보이기/숨기기 함수를 만들 차례입니다.
이 함수내에서 "타원 6"에 접근하는 방법은 2가지가 있습니다.
첫째는 순서(Index번호)로 접근하는 방법이고
둘째는 이름으로 접근하는 방법입니다.
이 2가지 방법으로 만든 함수들은 다음과 같습니다.
-------[ 방법1 : Index로 접근하는 함수 ]---------------------------------------------
Sub ShowShape()
ActivePresentation.Slides(1).Shapes(4).Visible = msoTrue
End Sub
Sub HideShape()
ActivePresentation.Slides(1).Shapes(4).Visible = msoFalse
End Sub
-------[ 방법2 : 이름으로 접근하는 함수 ]---------------------------------------------
Sub ShowShape()
ActivePresentation.Slides(1).Shapes("타원 6").Visible = msoTrue
End Sub
Sub HideShape()
ActivePresentation.Slides(1).Shapes("타원 6").Visible = msoFalse
End Sub
역시 검색을 해서 어찌어찌 아는 것과 잘 설명하는 것과는 큰 괴리가 있네요..
불친절하게 나열만 하는 것 죄송합니다...
그래도 뭐..
어차피 관심이 있는 분은 뜯어서 볼 것이고 관심이 없는 분은 그냥 주르륵 내리겠죠 뭐..
암튼 본 주제에서 학습이 된 내용을 정리하면 다음과 같습니다.
1. 파포내에 포함된 셰이프들을 메세지 박스로 확인 해 보았다.
2. 셰이프들의 이름은 파포에 첨가되는 순서와 도형의 종류에 따라서 파포가 알아서 작성을 한다.
=> 프로그래머가 미리 지정을 할 수 없다.
3. 본 설명에서는 빠져 있지만 셰이프의 인덱스도 도형의 삭제 및 추가, 그리고
앞으로 가져오기/뒤로 보내기등의 조작에 의하여 가변적으로 변화는 특성이 있어서
항상 고정적인 것은 아니다.
=> 절대적인 Index번호가 아니라서 프로그래밍의 안정성을 저해 한다.
4. 셰이프들에 대한 접근하는 방법은
1) 슬라이드 번호와 셰이프 번호로 접근 하는 방법과
2) 셰이프 이름으로 접근하는 방법이 있다.
5. 셰이프의 속성중 visible 속성을 변경하면 보이기 및 숨기기 효과를 만들 수 있다.